TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Why a Computer Science Degree Matters

26 pointsby shortjover 12 years ago

25 comments

jeyover 12 years ago
How is this a case for a degree? It's really a case for being <i>educated</i>, a case for studying your field and understanding concepts like "finite state machine". You don't have to go to college to get that, and lots of people seem to get through college CS degrees without gaining that understanding.
评论 #4926057 未加载
评论 #4926080 未加载
pnathanover 12 years ago
Yes, OP. This is a first-fruit of the CS degree. Might I suggest looking at threads and continuations and pondering the interrelation, as well as the pi-calculus &#38; the Occam language?<p>Metacomment: incoming list of people saying cs education is for "sheeple" and any real hacker can get a job/learn it on his own.<p>And this is the metareply,<p>That's not the point of an education. Mistaking college for that is thinking college is trade school training. It generally hasn't been, it usually isn't, and it shouldn't be.<p>Loosely, the purpose of education ( as opposed to training ) is to provide (i) a broad base of understanding across a wide variety of areas nearly inaccessible without portals created by experts, (ii) a theoretical grasp of the field, providing a framework and sense of theoretical possibilities present, past, and future, (iii) a structured and systematic mechanism to go through these subject areas in ways that are (a) thought-through, (b) approximately complete, and (c) pedagogically competent, and finally, (iv) a standard way to attain a certain competence in the area that is generally agreed upon to provide a base understanding.<p>It would be disingenuous to suggest, imply, or to ignore the fact that many educational institutions do not fully live up to their promise. It would also be disingenuous to ignore the fact that a vast number of incoming students really just want to be trained for a job and go make a decent wage, which is an <i>entirely morally acceptable desire</i>. These facts are connected by the economics of supply and demand.
评论 #4926039 未加载
rivalisover 12 years ago
I am a graduate student at a big state university, studying complexity theory. I TA for the (required) introduction to discrete mathematics sometimes, and when we study FSM's I get to have a lot of fun motivating them for the students.<p>Automata theory may seem arcane, but if you want to truly understand concurrent programming, protocol design, robust systems, etc, you need good cognitive models. Heck, Erlang (one of my favorite languages for massively distributed computing) has some nice OTP stuff (<a href="http://www.erlang.org/documentation/doc-4.8.2/doc/design_principles/fsm.html" rel="nofollow">http://www.erlang.org/documentation/doc-4.8.2/doc/design_pri...</a>) built in for using FSMs to make your code sane and robust.<p>FSM's are one of the theoretical CS concepts that it is easiest to see the practical use for, but other TCS tends to be just as useful if you look at it right. Eg, space complexity right? For the most part that doesn't matter, does it? Nope. A bunch of modern internet-sized problems end up being streaming problems (<a href="http://geomblog.blogspot.com/2005/05/streaming-algorithms.html" rel="nofollow">http://geomblog.blogspot.com/2005/05/streaming-algorithms.ht...</a>), and you need to understand basic space complexity, linear algebra, and probability, all of which a good CS degree will get into your head. I think the role of a good CS degree is to get some theory into people's heads, so that they have the right cognitive models for tackling difficult problems that come up in the real world.<p>I'm not saying that a CS degree is necessary to be a good programmer, or that you can't pick up those mental tools without a CS degree if you need them. But, it is easiest for most people to learn that kind of stuff in a university environment. I for one didn't know that I needed theory to work on the sorts of massive-data problems I was interested in, before going to university. A good CS degree knows about your unknown unknowns.
solox3over 12 years ago
"Why a CS Degree Matters" is totally different from "Why Choosing a Good CS Program Matters". In the end, we all get similar pieces of paper, but what they teach you can be completely different. Some schools offer CS by the Faculty of Science; some schools teach software engineering in their CS classes; some schools do not distinguish between computer and software at all.
guard-of-terraover 12 years ago
It does not takes a degree to know about FSMs.<p>You have to know several hundred things in order to be a good programmer, and a good chunk of these aren't even on CS program.
评论 #4925986 未加载
评论 #4925954 未加载
评论 #4925947 未加载
RodgerTheGreatover 12 years ago
Put another way, the value of a degree is that it forces you to expose yourself to a broad range of ideas. Self-education is a great way to learn about things that interest you, but less effective at ensuring you try things that seem boring or unpleasant at first.
评论 #4925938 未加载
Jemaclusover 12 years ago
I've always considered a degree to be a ticket to an interview. It's proof that you're somewhat knowledgeable about a broad range of topics relating to a single subject matter (in this case, computer science). You don't really know enough to be an expert on it -- at least not any more so than anyone else with that degree, and certainly not to the level of professors. Post-grad degrees are where you become experts... but I digress.<p>I consider a degree to be proof that a) you can be trained, b) you can start and complete a program of study (i.e., project), and c) you have a good idea of what you're talking about.<p>It doesn't mean you are any good at it (or even above average, really). It doesn't mean that you're a programmer or a scientist. It just means that you're trainable.<p>And in that regard, the major you choose doesn't really matter one bit. You can get a degree in biology or theater or business, and you'd still be trainable. You might not have the fundamentals, but those are easily taught. If you can learn bio-chemistry, then you can learn FSMs and pick up the fundamentals of programming.<p>So as others have pointed out, it's not a computer science degree that matters. It's trainability and the capacity and desire to learn that matter. I'd hire a hard-working, self-directed, knowledge-hungry theatre major over an entitled, I-don't-want-to-do-anything-but-program CS major any day of the week.
teteover 12 years ago
I have known about FSMs before starting studying. What I had to relearn though was how to draw them, like basically reading and drawing stuff is what always was/is the big problem to me. I prefer to write stuff down and I am sure in a few years and actually in a few months I'll have forgotten about all of this.<p>It's actually the reason for really disliking papers that prove something. You forget stuff after you got that paper, but keep your degree.<p>Also one simply has to say that there are HUGE differences between what you need to get that sheet of paper, even if you went to the same school and often if you attended it at the same time.
sonabinuover 12 years ago
Agree wholeheartedly with you, being forced to learn the concepts that seem mundane at the time has it's value.
mohamedmansourover 12 years ago
It depends on the University. I am from University of Ottawa, and I wish I took Computer Science instead of Software Engineering. They made me take Geology/Evolution/Italian Cinema while I begged the dean I would like to take Computer Graphics/Artificial Intelligence/Cryptography etc. Software Engineers in my University let the student focus on the higher level vision to know everything, but I kid you not, I totally forgot everything I learned in Geology/Evolution/Italian Cinema/etc. So if I took Computer Science, then I would have done the fun stuff, the important stuff that would help me prepare for job hunting. Instead, I just focused on Open Source, and personal projects to prepare, and that worked.
alexmicover 12 years ago
I'm with you.<p>After my second year at uni I felt that I should just quit and get a job. Everything I needed for landing a job in the industry, I was getting from my own side projects. I wasn't learning about things like scalability, or robust system architectures, or code deployment, yet half of the interviews I went through expected me to know about them, even if it was for a graduate position.<p>I still haven't used the vast majority of the theory I was taught at uni, but sometimes, when you come up with an elegant solution and trace it back to that 'Computer Vision' course you've done at uni, it feels like it's all worth it. As others said, coding skill is very important but when you know the theory you know where to look for solutions.
aba_sababaover 12 years ago
It matters so you can win programming competitions?
DaNmarnerover 12 years ago
Drop the "Degree". Computer Science matters.
评论 #4926081 未加载
pm90over 12 years ago
[disclosure: I'm as CS Grad Student]<p>The biggest value of a CS degree to me is to be exposed to the cool work of others.<p>What I mean is, we have people from all over coming here and giving talks on the kind of things they're working on. Sure, many of these things are more 'academic' in nature (in the sense of not being immediately deployable e.g. a new internet protocol), but I think their work is exploring the boundaries of the current state of knowledge.<p>To get a feel for what kind of crazy stuff intelligent people are up to. That's the reason I love being a graduate student.
film42over 12 years ago
I think what OP is trying to say is that there are some things that he would never bother trying to learn on his own because they're just so random, _but_ thanks to what he learned getting his degree, he was able to recall and apply a small concept which really made a big difference.<p>In my humble opinion anyone can learn to program in any language and most people can produce quite a few examples, but good programers know how to apply theory which helps them produce faster and more reliable code.
abhishivover 12 years ago
But we are not taking into account cases where a CS degree does irrevocable harm.<p>For example, the tendency to religiously follow patterns, over-complicate things.<p>IMO these concepts come up all the time. A CS degree might help you to know what they are, but not when and how of applying them.<p>Also plenty of self-taught developers are aware of these patterns. I can't imagine a "good developer" who wouldn't know about FSM, or someone who would use redis without considering time complexity.
KaoruAoiShihoover 12 years ago
It makes the case that instead of people studying superficial and largely pointless things like treehouse and codeacademy they should instead take MIT OCW.
eloisiusover 12 years ago
&#62; How often does that concept come up when you are tossing together a web app?<p>I end up using some kind of state machine just about every time I build a web app. If you're just tossing PHP together to make something work, you might never happen upon a pattern like that, but as a professional developer these things definitely shouldn't be a mystery, even if you "just" build web apps.
评论 #4925930 未加载
评论 #4925967 未加载
评论 #4926009 未加载
评论 #4925898 未加载
saosebastiaoover 12 years ago
Apparently it is only 3 years because they skip all the classes where they teach you to not use run-on sentences.
rustcover 12 years ago
I'm going to hijack this thread for some related opinion (sorry):<p>For those who _did_ get a CS degree, what things you learned from it do you use in your current programming work? and how?<p>Edit: or rather, what is the single most important thing you would want self-taught programmers to know about, that you find most don't?
j45over 12 years ago
It's not what your degree makes of you, but what you make of your degree (and self-education).
nxnnxnover 12 years ago
But what might you have learned had you done something other than get a CS degree during those years - maybe just read Knuth? I think what you are really saying is reuse ideas/code/patterns and try and stand on others shoulders.
aboodmanover 12 years ago
s/absorbent/exorbitant/ ?<p>Also first sentence is really awkward. Better:<p>I will be the first to admit that I absolutely despise the state of higher education. The concept is fundamentally flawed, and I am not thrilled to have spent 3 years (and only 3, thankfully) working towards a piece of paper that “proves my skills”. In my opinion, it does not do that in most cases.
评论 #4925886 未加载
bchover 12 years ago
Ironically, now that this is on HN, there is apparently one less reason to go to school and get a degree to learn this.
digeridooover 12 years ago
People who don't get college, don't get college.