Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> CS students

I think CS students should be taught computer science, not software engineering.



Pure theoretical computer science is just a weird offshoot of discrete mathematics, mostly, right?

The central concession of Computer Science as correctly taught is that a purely theoretical approach will not enable you to do anything of use--while you're still finishing your existence proof, some asshole with Ruby and AWS has already gotten it working "good enough" to get funding and make people happy through trial and error.

Software Engineering is too limited a discipline itself, because it is mostly project management, architecture, and planning--mostly vocational skills learned through (hard-earned) experience.

Computer Engineering is too focused on electrical engineering problems: you can guarantee how data is transferred between registers and how fast signals fan out and whatnot, but what the data is or how it is being transformed matters not.

Computer Science as taught combines both of these things in hopes of producing students that can reason about what they're doing (like mathematicians) and plan projects to execute on that (like software engineers) and to appreciate when actual hardware will choke on it (like computer engineers).

It's a blended subject for a bloody good reason.


Maybe 5% of CS grads at the greatest will ever do CS as a full time job. 95% will be programmers/engineers most of the time. Its nuts that you think we should be teaching the former and not the later in just the same way that law is taught. Instead of teaching the practice, the academic subject is taught which means graduating students require extensive experience.


They should be taught both. Too often do I see people coming out of college with strong theoretical roots and absolutely zero clue on how to use a debugger, a source control system or the slightest idea of how a software project goes.


Then they should have picked Software Engineering instead. There is a reason both exist.


Well the C does stand for computer.


“Computer science is no more about computers than astronomy is about telescopes.”

- Dijkstra

It was just too relevant in this case...


How much weight would you give the opinion of an astronomer (today) who didn't know how to use a telescope?


Many astronomers don't have to use or deal with telescopes, just like not all particle physicists have to know much about accelerators.


I don't know. But I could imagine a theoretical computer scientist that didn't really know how to program, or 'use a computer' (I don't necessarily think that that is likely, but I think it might be possible). I had a TA in an algorithm course who claimed, when asked about which data structure was most appropriate for a certain algorithm, that he didn't really know anything about data structures (his background was pure math).

This might be a useless point in the context of something like an undergraduate degree in computer science, though. I guess it is a matter of how theoretical the program is.


"I disagree." - Turing


A Turing machine is not a computer, it's much closer to a mathematician writing down a proof: read a couple of symbols, scratch head, write down symbol, go back again. It's a mathematical model for following a sequence of steps and closely tied to logic, much more so than it is similar to a computer.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: