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.

Let's Not Call It "Computer Science" If We Really Mean "Computer Programming"

205 pointsby vetleralmost 13 years ago

37 comments

tseabrooksalmost 13 years ago
So, I agree with this article in spirit. Lots of programmers could've benefitted from a more programming centric approach rather than a CS approach. However, this bit gave me pause.<p>" I cannot tell the difference by watching them develop software."<p>I can't disagree with this more. While this may be true of students who were middle of the road students in CS programs. I can't definitely tell the difference between people with a formal cS background and those without in my daily work. I work with a handful of extremely talented self taught programmers but there is definitely a difference between the way they attack problems and think about coding versus the CS folks. Not to even mention the programmers I've worked with who have EE degrees. Those guys think about things and code in an entirely different third way.<p>All of these people / approaches are necessary... and none of them are better than the others... but pretending like they don't do things different because you want to feel like you don't need a CS degree is disingenuous.
评论 #4048582 未加载
评论 #4048700 未加载
评论 #4049411 未加载
评论 #4048346 未加载
评论 #4048992 未加载
评论 #4067170 未加载
评论 #4048371 未加载
评论 #4048478 未加载
vbtempalmost 13 years ago
#1 (My Ad-Hominem Attack) Who is this guy? Why does he go on to trash comp sci if he never studied it?<p>#2 "Of all the mathematical sciences, computer science is unquestionably the dullest. If I had my time again, despite discovering just how much I love writing software, I still wouldn't study computer science."<p>I stopped reading after this point. Why does he state as a matter-of-fact that computer science is unquestionably the dullest? It's actually quite captivating and quite profound. Cryptography, machine learning, computability theory - all leading ultimately to the question of what, exactly, is knowledge and what can we know.<p>I can't stand the broader attitude of this, which essentially boils down to "I'm a hotshot programmer therefore anything academic or computer-sciencey is stupid". A lot of people in general could be a little more humble and recognize the fact there's a lot of things that they don't know they don't know.
评论 #4049199 未加载
评论 #4049210 未加载
alan_cxalmost 13 years ago
Here in the UK, when I did my Computer Science degree, about a third to a half was programming. The rest of it was basically hardware and mathematical type theory. There was more but the point is, it covered computing in the whole. How CPU's actually work, how data is organised on a disk, what is actually going in in CAT5 between cards, etc. AI, Databases, servers, etc.<p>The was another course, CS Software Engineering, or "programming" for the rest of us. They did our programming stuff, and then some. The two courses sort of forked. Programmers did more programming, we did electronics, hardware etc.<p>Funny thing was, the CS students became better programmers than the CS-SE people did. I think it was because they understood computers, and not just programming. Next odd thing was that the CS guys often become programmers, and the CS-SE guys ended up in support roles. Even when the CS-SE guy were programmers, they worked in herd like environments, where as the CS programmers ended up on some very interesting projects, like avionics.<p>Later on, when I did some support roles, I found that the programmers knew less about computers than secretaries. Web designers/coders were worse.<p>Not saying this is any sort of trend, and I did do my degree 15 odd years ago. But I found it interesting.
评论 #4048705 未加载
评论 #4050424 未加载
portmanteaufualmost 13 years ago
I follow the author's point, but I feel as though he's as guilty of dismissing valuable knowledge as the academics he condemns. I recently completed a graduate degree at a university that offered both a "Computer Science" program as well as a "Software Engineering" program. This is only my opinion, of course, but the difference in depth of understanding between the students in each field was very stark. The SoftE students dedicated several semesters to development best-practice-type classes: generating JavaDocs, curating JUnit tests, writing and revising good requirements, and UML modeling. They would essentially walk away from their program as expert Java users with little to no idea how Java itself (let alone the machine underneath) functioned. The CS students knew the inner workings of a computer program from code to compiler to stack, but would have to learn the bookkeeping side of development on the job. Both paths have their strengths and weaknesses and you've got to learn some degree of each to be a meaningful contributor.
tomstuartalmost 13 years ago
I agree that a lot of people only need to learn how to program, but I find computer science genuinely fascinating and mind-expanding, so it's a shame that more programmers don't feel like they're able to access it, either because of unfamiliarity with formal mathematics or a justifiable aversion to the "category theory or GTFO" attitude.<p>&#60;plug&#62; Which is why I'm writing <a href="http://experthuman.com/computation-book" rel="nofollow">http://experthuman.com/computation-book</a>. &#60;/plug&#62;
评论 #4048589 未加载
评论 #4049890 未加载
dxbydtalmost 13 years ago
fwiw, an opposite take, from a decade ago.<p>at my cs pgm, the assistant professors were supposed to make a presentation on day 1 so the grad students could make an informed decision which prof to work with, which subjects to sign up for.<p>the software engg prof was a glib, entreprenurial hotshot who said "my students have been placed at netscape, sun, microsoft, oracle". he talked about industry partnerships, internships, 1000s of lines of production code, maintenance, unit tests, refactoring...<p>the db prof said "i have personally placed all my students in oracle". he talked about rdbms, schemas, superkeys, boyce codd normal forms, how "everything was ultimately data, so you'll never be jobless if you became a dba".<p>the algorithms prof was a shy lanky dude who went straight to the blackboard and wrote "computers are to computing what telescopes are to astronomy". at that point none of us knew who dijkstra was, so we just looked at each other like "huh?". he then turned to us and said "99% of cs is about searching and sorting. sort algorithms. search algorithms." then he drew a table which listed performance of quicksort, shellsort, heapsort, insertion sort, and two algorithms of his own invention. he talked about Big O notation, theorems, discrete math, taocp. our heads were spinning, and when he left there was a huge collective sigh of relief.<p>at the end, the student breakup was like 49-49-2. So only 2% of the class signed up for algos. Like most indians, I come from a poor household &#38; my main concern was coin. So I signed up for Software engg. After 1 month, I dropped the course and went crawling back on my knees to the Algo prof, and begged him to take me on. That single decision changed my whole life. In that 1 month, I had found out something about myself - that I was a royal prick. I was personally not cut out to do scut work.I had zero interest and respect for maintenance, unit tests, requirements &#38; specs, UML modelling, refactoring, waterfall method, agile, kanban...I found that whole discipline filled with unproven subjective airheaded garbage, essentially a fad. To this day when a recruiter mentions the word "unit tests" on the phone, I just hang up. Just pure instinctual reflex.<p>It takes all kinds...
评论 #4050082 未加载
评论 #4050350 未加载
评论 #4049871 未加载
评论 #4052525 未加载
评论 #4051014 未加载
评论 #4049953 未加载
zeteoalmost 13 years ago
This is practically a high brow version of "math is hard, let's go shopping": hash tables are hard, let's use java.utils. Yes, you can write a lot of programs with a few primitives you've learnt in high school and some random bits of practical wisdom you've picked from co-workers. But you're horribly limited as well. (To pick a simple example: if you don't understand how hash tables work, then you probably also use naive O(n^2) algorithms where O(n log n) is possible with little extra effort.) It's a personal decision to stay this way, but it's quite awful, for other people who may look up to you, to quash their interest to become more educated by proclaiming higher knowledge is "dull" and useless.
taybinalmost 13 years ago
I was with him until he started complaining about being asked how to implement a hashmap and how this implied that the interviewer had reimplemented Java.utils.<p>How would you know when to use a hashmap and when to use a list if you don't know anything about big-O notation?
评论 #4048026 未加载
评论 #4048384 未加载
评论 #4048363 未加载
评论 #4047982 未加载
rlpbalmost 13 years ago
"Of all the mathematical sciences, computer science is unquestionably the dullest."<p>Really? I find it the most interesting. Which is, I think, what led me here.
评论 #4048176 未加载
评论 #4048202 未加载
jes5199almost 13 years ago
I interview a lot of people who want programming jobs.<p>What I find is: almost nobody can program, and almost nobody knows basic CS 101 data structures.<p>It does not matter if you are a self-taught programmer with ten years of experience in the best companies, odds are that you cannot solve a trivial coding exercise.<p>It does not matter if you have a masters degree in Computer Science, odds are that you cannot successfully build a tree structure.<p>I have no idea how these people keep their jobs or how they graduated, but this is the norm. People who can do CS at all, and people who can code at all, are both rare. Or at least, are rare in the pool of people applying for work.
评论 #4049838 未加载
评论 #4049878 未加载
bluekeyboxalmost 13 years ago
The rift between CS and SE is unfortunate. To use Greek terms for different kinds of knowledge, computer science is <i>logos</i> (reasoning from first principles). Software engineering is <i>metis</i> (practical, local knowledge). They complement each other.<p>I suspect that the only reason there is such a rift in the first place is because the sources of funding for people employed in CS and SE are different. CS is funded via (predominantly) government grants. SE, clearly, is typically funded privately.<p>Like China commenting on diplomatic rows between North and South Korea, I'll say: both sides need to learn how to work with each other.
andyjohnson0almost 13 years ago
“Computer science is no more about computers than astronomy is about telescopes.” - Edsger Dijkstra
pnathanalmost 13 years ago
It's worth noting that a sharp high schooler can learn to program - many do.<p>It's a rare, rare high schooler that can learn how to use computer science. Most CS grads don't.<p>And we wonder sometimes why our software is so cruddy.
评论 #4048436 未加载
评论 #4048857 未加载
csallenalmost 13 years ago
The reality is that there are many different responsibilities that, confusingly, fall under the singular title of "programmer".<p>If you're the tech cofounder at a startup, you're probably focused on building a new product that customers love from scratch. You're going to need a very different set of skills and abilities than, say, Microsoft engineer #10000 who is maintaining some old codebase. Or even engineer #100 at Google who's trying to scale to hundreds of millions of people. Etc.<p>What's weird is that people hardly ever mention these differences. They just say things like, "All programmers should know advanced algorithms"... or data structures, or compilers, or UX design, etc. Even if people/companies don't say this explicitly, they say it implicitly when they quiz for specific material in interviews for jobs that don't rely on that type of material.<p>If you're exceptionally good at what you do, but you constantly hear that you're inadequate because you don't have <i>this</i> skill or <i>that</i> knowledge, it's easy to doubt yourself. But you shouldn't. The fact is there's nobody who knows <i>all</i> of this stuff, or even most of it. And there's no job that's going to ask you to <i>do</i> most of it (I say this as the sole tech person at a startup where I have to do sysadmin, back-end coding, front-end coding, and design single-handedly).<p>Just find what you love and get good at it.
spegalmost 13 years ago
I like to think of it like this:<p>Scientists: Focus on developing new theories, solutions to abstract problems, etc.<p>Engineers: Build tools based on the theories created by the scientists.<p>Developers: Build products based on the tools the engineers made.
评论 #4048302 未加载
评论 #4048241 未加载
sakopovalmost 13 years ago
When i was in university majoring in Computer Science i had about 5 programming classes in all 4 years of school while the rest were theory, applied statistics and mathematics. So to call it "computer programming" is a major overstatement to me.
评论 #4050250 未加载
评论 #4049007 未加载
katerayalmost 13 years ago
Upvoted just for the title. C'mon, value judgements of CS vs programming aside, there needs to be a broader awareness of the difference between the two.
derekerdmannalmost 13 years ago
That's why schools like RIT have a Software Engineering program. Learn the basics of CS, then go build real software with it.
scott_salmost 13 years ago
I agree with his main point, that we should have an entirely separate "software engineering" major which would stress the <i>process</i> of software development and prepare students for being professional software developers. Then, computer science programs would mainly be for students who wanted to do research in computer science - much like the difference between various engineering disciplines and physics.<p>But he comes dangerously close to the "computer science is math" notion that assumes CS is just theory. It is not. I wrote an entire blog post in response to this (surprisingly common) sentiment: <a href="http://www.scott-a-s.com/cs-is-not-math/" rel="nofollow">http://www.scott-a-s.com/cs-is-not-math/</a><p>HN discussion: <a href="http://news.ycombinator.com/item?id=3928276" rel="nofollow">http://news.ycombinator.com/item?id=3928276</a>
评论 #4049533 未加载
arikrakalmost 13 years ago
Great article. Most students would probably prefer practical programming experience but they get CS degrees since that is all that is being offered at their college. The schools meanwhile couldn't care less about what's practical and they refuse to become a "trade school" so they instead require the students to learn difficult and often unnecessary material. Besides making it more difficult for the students who do succeed, it ends up scaring off many people from a career in software development all together. I think its time for some disruption in the education system...
评论 #4048247 未加载
btbalmost 13 years ago
IMO CS is necessary to advance the state of the art. And while I completely agree that many computing/programming tasks currently do not necessarily require a CS degree, there is no guarentee that will always be the case.<p>As for my myself, I studied roughly 3 years of computer science before I dropped out to work full-time, so I only have a half-finished bachelors degree. I wont say I regret it, because the last 5-6 years of being partner in a startup and earning a good pay-check have been fun. But I very much do regret not being able to completely grasp all the new interesting research papers that are coming out. Nothing is more frustrating than reading a research paper, and knowing enough to be able to grasp that this algorithm could improve some part of your system, but then being unable to decipher/implement it, because one have forgotten(or not learned) parts of the mathematical notation/background. In other words being able to see the solution, but the solution being juuust out of your grasp. I hope down the road to be able to compensate for this problem by hiring smarter guys than myself that DID finish their CS degree :)<p>Also another benefit of studying CS is that around year 2-3 you will be introduced to some subject matter that I at least personally am pretty sure I would never have heard of otherwise. I found stuff like operations research and integer programming very interesting. I havent yet have had opportunity to use any of it in the "real world", but its nice knowing whats out there, who knows it might come in handy a few years down the road in some other venture.
joe_the_useralmost 13 years ago
I've studied theoretical math and computer programming.<p>Coming from theoretical math, I feel like the reason that computer <i>science</i> is dull that as a part of math, it is mind-bendingly difficult.<p>The almost no "substantial" theories of computer science because they would have extraordinarily encompassing abstract statements about what is possible to compute, essentially to even think about. P =? NP is a good example. Unlike other Millennium Math Problems, there has essentially been no positive progress on the question. The only theorems are about how this or that tool won't help us. And P=? NP is a simple, even "obvious" statement from the right standpoint.<p>Essentially, most of the generic theories of CS are constructions to show something either possible or impossible.<p>I'd wonder if you could teach CS as something like the ragged edge of mathematical logic. Might make it authentically interesting ... for a few people but it would probably wind-up being less practical. Sigh...
donsalmost 13 years ago
&#62; the UML meta-meta-model<p>that's not computer science; that's software engineering "theory".<p>Algorithms; data structures; type systems; however ...
JoshMockalmost 13 years ago
Great article. This expresses better than I ever could have at age 20 why I quit my CS degree since I already had a job. At the time, the university was experimenting with a "software engineering" degree, but it was new and not yet accredited so it was too early to know if it was worth it.
badhairdayalmost 13 years ago
"Developers will need some theory, and I'm painfully aware, too, of the degree snobbery that most employers harbour. So I propose that the right course would be a 5+ year apprenticeship with part-time degree study - CS in the classroom 1 day a week, software development in the office the other 4."<p>I disagree with this statement. My program at school supplements 6 months of formal learning with 6 month long internships. I don't feel like 4 days a week is enough to get the benefits of working to supplements formal learning. I defiantly need 6 months in a job to learn something valuable, and towards the end of my internships is where I feel like I've learned enough to contribute just as much as any of my teammates and coworkers can.
kelvin0almost 13 years ago
Basically, we should only learn the 'real' programming skills and forget that the whole state of computing technology rests on the shoulder of giants who created these algorithms and did all this research for 'real programmers'. Oh, we certainly don't need CS, because it gets in the way of writing code.<p>Seriously, I understand what the author is trying to convey, but IMHO he goes too far on the bias against CS. It is a serious handicap to program anything worthwhile and using APIs and frameworks without understanding (at least to some degree) what they do ... my .2 cents
ank286almost 13 years ago
To a computer scientist, programming is merely a tool to help bring their computer science ideas to life. Writing a bunch of APIs and calling them will only take you so far. After a certain point, theory will prevail because math (computer science is applied math) is the truth. Also the "computer programming" major is called Infoscience majors at the top engineering schools, those students are laughed at, you don't have to be smart to grind through those classes ie you don't build mental toughness towards theories.
评论 #4052401 未加载
flyhighplatoalmost 13 years ago
I agree that modern "computer science" educations often don't teach enough to allow you to make great software, nor enough to open your eyes to the grander concepts. But you can't take that to mean that there is some subset of concepts that are useful to you and that this is all you need to know to hone your craft.<p>I do not like these strange lines in the sand that are drawn between engineers and scientists. These distinctions are artificial and a curious mind shouldn't be trapped on one side or the other.
milesvpalmost 13 years ago
&#62;Time spent learning the UML meta-meta-model and Object Z &#62;is, for 99.9% of developers, time completely wasted<p>I thought it was interesting that the poster used these examples for CS.<p>I didn't take a single course at university that dealt with either of these topics. Everything I dealt with in comp sci was algorithms &#38; complexity theory, coupled with a smattering of, "this is how computers actually work". Far as I can tell op is talking about computer programming subjects, and not computer science subjects.
raldialmost 13 years ago
Indeed, don't call it computer science unless you're making computer hypotheses that you then test via computer experiments, using the computer scientific method.
jeffdavisalmost 13 years ago
While we're at it, why is it called Computer <i>Science</i>? I think "Computational Mathematics" or something would make more sense.
评论 #4049852 未加载
评论 #4048788 未加载
JoeAltmaieralmost 13 years ago
Writing applications: go ahead, program by the seat of your pants.<p>Architect a solution to a big problem: theory comes in very handy.
评论 #4048116 未加载
cliftonkalmost 13 years ago
Contrarian take on the issue:<p>I wrote a Quake 3 mod in C++ (directional damage modification, server/client magazine+reload, and a few other things not-so-difficult things) in high school around age 17. I then did a CS undergrad at a top 6 university.<p>I learned more about programming writing that mod than my combined experiences at school.
评论 #4056880 未加载
nivertechalmost 13 years ago
What's wrong with "Software Engineering"?
swa14almost 13 years ago
CS to a programmer is no more "theoretical" than anatomy is to a surgeon.
wissleralmost 13 years ago
Feynman had it right: <a href="http://www.youtube.com/watch?v=lL4wg6ZAFIM" rel="nofollow">http://www.youtube.com/watch?v=lL4wg6ZAFIM</a>
评论 #4048312 未加载
CrLfalmost 13 years ago
"It helps to know some music theory if you write and perform music, but a lot of very successful songwriters and performers get by very happily with just enough music theory."<p>This is an absolutely bogus comparison. Music does not need to be maintained, music does not need to be troubleshooted or debugged (and thus, reasoned about), music does not solve a problem(1).<p>Music is an artistic expression, while computer software isn't.<p>(1) Writing soundtracks for movies, for example, can be considered solving a problem with music. It also requires music theory knowledge because soundtracks have to convey particular emotions at particular moments.
评论 #4048105 未加载
评论 #4048270 未加载
评论 #4048155 未加载
评论 #4048569 未加载