Live data from Hacker News

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

codemanship.co.uk

101–110 of 205 posts

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

#101
post #57

Earlier quoted context omitted.

I'm curious about what you think those differences are, and how you think it hurts or helps.

It is hard to answer this because a lot of the trite answers are indeed false. A computer science student may be more able to tell you whether an algorithm is O(n^3) or O(2^n), but the normal (and experienced) programmer will be able to tell you either is "slow" and fix it just as quickly. But there is a style of thinking that can come out of a study of computer science that can be very difficult to obtain on your ow…

Try the following thought experiment:

Person A spends four years getting a BS in CS at a top-tier school, learning about programming at least for a few hours a day on average, with the benefit of a well-considered curriculum and instruction by wizards.

Person B spends four years working full-time on something interesting at Google, which probably gives her more total hands-on-keyboard time, and also access to some minor wizards, although they may not care so much about teaching her.

Let's say that both of them also spend a bit of time on the side learning programming things not school- or work-related.

If both of them have an equal thirst for knowledge, I just don't see why person A is likely to become a better programmer, or why B would fail to pick up the style of thinking you described (which is common, in my experience, among good programmers.) I honestly think that you're mixing up the consequences of {smart, curious, motivated, spends a lot of time programming} and {took a CS degree}.

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

#102
post #95

#1 (My Ad-Hominem Attack) Who is this guy? Why does he go on to trash comp sci if he never studied it? #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." I stopped reading after this point. Why does he state as a matter-of-fact that computer science is unquest…

I agree totally. I do research work in crypto, and I find the theoretical aspects incredibly interesting and engaging. That said, I don't think he is incorrect in his overall point (despite the arrogance with which he makes it); most programmers only need enough CS knowledge to get by.

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

#103
post #95

#1 (My Ad-Hominem Attack) Who is this guy? Why does he go on to trash comp sci if he never studied it? #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." I stopped reading after this point. Why does he state as a matter-of-fact that computer science is unquest…

Starting with your ad hominem, I think you took exactly the wrong things away from this article. Regardless of his writing style, his points are dead-on: 1. Computer science doesn't teach programming (with the corollary that computer scientists specifically don't want to teach programming). 2. Most people going into computer science want to learn programming. 3. Many people get fed up with the rigors of computer scie…

At the university that i attend (University of Waterloo, Canada), we actually do have a Software Engineering program which is part of the Engineering department, and a Computer Science curriculum which is part of the Mathematics department. The SoftEng degree owners can even qualify to become professional engineers.

I'm also 99% sure that the two degrees are also common at quite a number, if not the majority of big technical universities in Canada.

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

#104
post #28
post #19

Feynman had it right: http://www.youtube.com/watch?v=lL4wg6ZAFIM

I agree it's more of a mathematical discipline than a science. But it isn't just "studying man-made creations". It's about studying computation in general. Not just man-made machines that compute.

Complexity theory is based on the idea of a turning machine, a man made thing.

Mind you, information theory, which is often considered computer science, certainly applies to nature itself. Of course, it would be easy to claim that information theory isn't actually computer science. Personally, I consider most of computer science more math than science. In fact, I sometimes tell people I do math! (This is a great way to avoid further questions at borders or awkward parties.)

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

#105
post #95

#1 (My Ad-Hominem Attack) Who is this guy? Why does he go on to trash comp sci if he never studied it? #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." I stopped reading after this point. Why does he state as a matter-of-fact that computer science is unquest…

Starting with your ad hominem, I think you took exactly the wrong things away from this article. Regardless of his writing style, his points are dead-on: 1. Computer science doesn't teach programming (with the corollary that computer scientists specifically don't want to teach programming). 2. Most people going into computer science want to learn programming. 3. Many people get fed up with the rigors of computer scie…

I agree with the sentiment that software engineering isn't computer science, but I disagree with the sentiment that software engineering is a discipline worthy of note on the same scale that we afford to, say, electrical engineering, civil engineering, or mechanical engineering. To date, software engineering is still largely a collection of (fairly subjective and contextually-sensitive) best practices.

Software Engineering is better off if it's treated as a trade like being an electrician or a carpenter (which it largely is through on the job, experiential training being as emphasized as it is). Take what you absolutely need from the theory, and learn from those in the know to become a respected practitioner.

Software engineering is a trade without a guild.

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

#106
post #72
post #60

Earlier quoted context omitted.

> I can't talk for the parent, but one significant way I expect people with formal training and people without it to differ is in how the knowledge of data structures and algorithms affects their work. And how often in your experience you stumble upon these kind of problems? In my experience, the clever parts are about 5% to 20%. Of course, there can be projects where the clever parts outnumber the non-clever parts,…

The question posed was "how do they differ?" not "how important is that difference?". If you ask me the latter, I'd say that for many domains it's not that important (see the caveat below.) On the other hand, for Google and Facebook and similar companies it's certainly very important, which is why all their interviews are mainly about how well you can reason about algorithms and data structures. Caveat: These problem…

> The question posed was "how do they differ?" not "how important is that difference?"

And the question arose from the claim that the formally taught and self-taught programmers take different approaches in general. It goes without saying that a problem that can be solved effectively using a trie will be approached in 2 different ways by someone who knows tries and someone who does not. The claim made in the OP was broad, and I am saying about 80% of the time, an auto-didact and a CS person will solve it the same way. Claiming that because sometimes a CS person can use insights which the non-cs guy doesn't have doesn't equate to different approaches.

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

#107
post #91
post #89

Earlier quoted context omitted.

I have always considered mathematics to be a part of philosophy and not a separate science.

It's all down to definitions. You could argue that mathematics is philosophy done right: With rigour.

Well, if you take attitude, then you'd have to reject all science because it relies on induction.

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

#108
post #107
post #91

Earlier quoted context omitted.

It's all down to definitions. You could argue that mathematics is philosophy done right: With rigour.

Well, if you take attitude, then you'd have to reject all science because it relies on induction.

Oh, nothing wrong with induction. Just with waffling around.

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

#109
post #56

Earlier quoted context omitted.

Add me to the list of people who are curious and don't agree at all with your claim that people with CS background approach regular problems in a fundamentally different way. The only times when the CS folks' approach differ is when they can reduce the unknown to a known - finding the least wasteful way to cut raw materials(knapsack); modelling problems as graphs/trees and then applying well known, efficient algorith…

Something that no one is acknowledging here is that a "CS" program isn't a uniform thing, and that people who come out of a "CS" program have not uniformly learned what it did have to teach. I never took the full CS program, but I hit most of the core classes while studying Cognitive Science. By far the most valuable class sequence I took was compiler design; learning HOW a compiler takes code and turns it into assem…

I think you are arguing against a claim I didn't make. Your first half of the post about compiler classes and other tougher courses are giving me the perception that I somewhere claimed CS education isn't useful. I didn't make that claim. I was responding to the claim about CS and non-CS people taking different approaches to problem solving.

> But back to your comment: It's not that all code needs to be "clever."

By clever, I meant code that isn't routine. My definition of clever will include dynamic programming, reducing NP complete problems to known algorithms, writing a parser which takes xml as input and produces python dicts("writing a parser is simple" you say. But compared to the rest of the code in a typical project, it does count as clever)

> But sometimes the straightforward approach made by someone who is good, but self-taught, isn't as good as the equally straightforward approach by the self-taught AND CS-educated programmer.

It's not me who was making general claims. In my post, I did point out that about 20% of the time, CS background is very useful. The OP made the claim that CS and non-CS approach differs in general, which I don't think holds true.

> Real higher-level CS projects frequently involve interesting graphics research, which (also frequently) ends up working its way into commercial game development.

"Real higher level CS" -> http://en.wikipedia.org/wiki/No_true_Scotsman

You don't get to choose what real CS research is.

CS researchers have a lot of commendable qualities, but that requires a different set of qualities than a regular software development project, and CS research doesn't hone their skills as far as regular software dev is concerned.

Look at the code from the academia. More often than not, either there is no code(hence the comment "doesn't exist") or it's spaghetti. I don't see how that helps you write code for the regular projects where you work with teams, code isn't thrown away and you are expected to maintain it. Now, I am not saying CS researchers can't work that way - I am saying what they do for research doesn't help.

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

#110
I agree with his main point, that we should have an entirely separate "software engineering" major which would stress the process 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.

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: http://www.scott-a-s.com/cs-is-not-math/

HN discussion: http://news.ycombinator.com/item?id=3928276

Post reply on HN