Live data from Hacker News

Ask HN: What's missing in a CS degree?

news.ycombinator.com

1–10 of 64 posts

Ask HN: What's missing in a CS degree?

#1
There seems to be lots of post both recent and before discussing the inadequacies of a CS degree. Could anyone elaborate on how to fill up this gap for better preparation in the real world? What would a person who wants to start a start up need to learn on his or her own? Also, what about open source contribution. I realize most answers would probably follow along the lines of "work on your own projects." but I would like more detailed advices based on your personal experiences. How much work is there left when just out of school? What did you do to fill that gap?

Re: Ask HN: What's missing in a CS degree?

#3
A nice start would be actually teaching Computer Science. Computer Science is a branch of mathematics, with both theoretical and applied aspects. This does not mean that learning Java syntax constitutes as "applied". I think it should be expected that CS students pick up languages on their own in order to complete and understand theory-based assignments. Anything else is probably just pandering to people who shouldn't major in CS. This doesn't mean programming projects are entirely out; if they serve to reinforce understanding something like logic programming or pointers, then by all means they're useful. The "open source contribution" and whatnot should be done on your own time, and doesn't belong in the curriculum, period.

Remember, you don't major in Physics to learn which brand of concrete you need to build a bridge. Not teaching a concept because it isn't "used in industry" is a sickening corruption of what academia is supposed to be about.

See my comment here: http://news.ycombinator.com/item?id=1345596

Re: Ask HN: What's missing in a CS degree?

#5
I think my CS degree was very valuable (regular expressions! hash tables! discrete math! cache cache cache!), although I'd encourage absolutely everybody to pick up two degrees as long as you're there. You might as well get a jump start on domain knowledge.

Weaknesses of a CS degree:

1) At the point of graduating college, it is likely that your experience working with teams in a production-like environment will be minimal. I think I did, hmm, three labs like this? None of them produced anything close to a real software product.

2) Academics don't work like industry. I worked at the university for a bit after graduation and we still didn't use, e.g., source control, testing, etc etc. Pick your favorite best practices test, we would have scored negative. It took me a few years to learn better habits.

3) You tend to do a lot of stuff which has little relationship to what you'll be doing for the rest of your life. If I were dictator for life of the CS department, I'd have kids exposed to web programming very freaking early, because it is much more likely they'll end up doing that than fat Java client apps (what we actually did in school).

4) There are a lot of soft skills that go into engineering that some schools give short shrift to. I will defend this one to the death: the most important skill for an engineer is oral/written communication, and their ability to actually produce stuff is a distant second. We had one class on technical writing.

Re: Ask HN: What's missing in a CS degree?

#6
One thing missing is a separate programming degree. The current CS curriculum at the schools I've seriously looked at has become a muddled bunch of courses that cover many basic CS topics at a very shallow level, trying to teach good programming practices along with some theory. This trend should be reversed in a CS degree - a lighter emphasis on actual programming and a heavier emphasis on mathematical analysis, proofs, etc. There is plenty of this kind of thing that has real-world applicability only tangential to programming. Even the grad-level AI courses at the University I'm attending downplay the role of math. There is nothing wrong with this per se, but I believe that it is at the expense of the real potential of teaching people CS at the undergraduate level. IS degrees sometimes fill the role of a "programming" degree but the variety there is pretty broad.

Re: Ask HN: What's missing in a CS degree?

#8
Industry might say that CS should concentrate on churning out experienced software engineers, but they are just avoiding the responsibility for training themselves.

If you read CACM academia thinks CS is missing students. They want to dumb it down to get more people in, especially less geeks and nerds, and more women and minorities. They are looking at ways of dumbing it down and making it appeal more to the masses.

I think in general CS is missing industry contribution. I would like to see more commercial enterprises writing papers, submitting at conferences, doing research, and training graduates to become developers.

Some CS programs seem to have buckled under pressure and turned into learn-java trade schools. These places are missing computer science. Some try to simulate the working environment and focus too much on working on larger projects in teams because that is what industry wants, but we have our whole life to do that and uni can't teach that well anyway, you need real experience for that.

But in general, I think most CS programs, especially after year one are pretty good, and teach what they should be teaching.

I like them to teach the classic core CS disciplines, theory, algorithms and data structures, AI, databases, software engineering, graphics, and they should focus more on leading edge stuff that is perhaps not so well used in industry but provides interesting scope for further research. I think they should deliberately use languages, paradigms, and tools that are not (yet) mainstream in industry.

Re: Ask HN: What's missing in a CS degree?

#10
When I left school my biggest gap was in my practical idea-to-code translation ability. I'm talking about the ability to sit down and write some useful code. I had spent the previous three years thinking about type systems, programming language design, and math, and when faced with the problem of having to make some code that would do some thing, I'd say, "What's the simplest angle from which to look at this problem?" It turns out that a much faster way for me to get well-designed working code was to just stop worrying and implement it badly, and not care about the design -- the best angle is from the inside. I've learned to artificially devalue good design.
Post reply on HN