Live data from Hacker News

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

news.ycombinator.com

11–20 of 64 posts

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

#11
post #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 mi…

I think they are all strengths of a CS degree.

We have our whole lives working in the real world to pick up those things that the University environment can only really introduce us to.

I don't want to waste my CS education on just getting a simulation of what the rest of my life will be like, I want to learn CS especially the things that might be harder to learn via experience in industry.

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

#13
post #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…

There's always this tension between the pragmatists and the theorists. I figure we just split it in two. CS focuses on research and theory. CP(rogramming) focuses on the pragmatic and artistic nitty gritty of building software. Now, I personally wouldn't advocate majoring in programming, because you really should just R the F'ing M, and make stuff on your own. But it's hard to argue against its validity as a major when there are tons of students clamoring to pay for it, and there are already so many way softer majors. There would obviously be a lot of overlap between the two.

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

#15
post #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 mi…

I think I did, hmm, three labs like this? None of them produced anything close to a real software product.

The devil is in the details! Stuff you think isn't a big deal As an undergrad CS student might well be a freaking big deal! Example: in my current project, we've found that in the new system version, the vendor's "type and the list selects the matching prefix" functionality kinda works, but slowly. (As in, over 3 keystrokes a second is too fast and the system loses track of the full prefix.) To our users, it doesn't work at all. Their accustomed workflow is disrupted across the whole app, so I have to go and patch it.

In academia, stuff like this is considered a triviality. In the real world, it matters a lot!

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

#16
I graduated last may as a computer science major and realized the holes in my skills were everywhere. I found that my theory was much better than my actual ability to code. It seems that schools should teach their students one oop language for three years and then start showing them what other options are out there. I found myself in the working world convinced I knew how to code in java, c++, python and php, w/o the real skills to work in any of them.

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

#17
I would say that an intrinsic weakness of CS (and, probably, any other engineering) education is that a lot of the curriculum is targeted towards a past goal. CS is not just science but also industry, arguably in some ways more industry than science, and a very quickly evolving one. Not all professors can keep the curriculum up-to-date.

Fortunately, it appears to be a relatively small drawback. Particular details may change in a few years anyway; being prepared for the change is more important, as is being capable of learning, and this normally comes with a solid foundation which a good university program can provide to a good student.

This is a very general answer. I apologize that I cannot give a more detailed answer; my exposure to the CS education was through a graduate school which gives a different perspective.

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

#18
post #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 mi…

I think I did, hmm, three labs like this? None of them produced anything close to a real software product. The devil is in the details! Stuff you think isn't a big deal As an undergrad CS student might well be a freaking big deal ! Example: in my current project, we've found that in the new system version, the vendor's "type and the list selects the matching prefix" functionality kinda works, but slowly. (As in, over…

Interesting. I'm nearly ready to graduate from Portland State University and I know, beyond a doubt, that had I turned in a project with a flaw that glaring I would have failed the project, for "general unsuitability".

Different schools, different methods, I suppose.

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

#19
post #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…

I agree to a large extent, but not 100%. Here is why.

You correctly said that Physics majors do not study which details of bridge building. Indeed this is part of a different major (Civil Engineering, I suppose).

In contrast, Computer Science is a very broad discipline. Large portions of it are science; large portions are engineering (or similar to engineering, if we exclude Computer Engineering per se). A good student, or a student with a good mentor, should be able to choose a more theoretical (scientific) or more practical (engineering) path and work on the curriculum accordingly. I understand that it is not always possible (in some places, for example, students cannot choose classes), but at least a student should be able to choose where to focus.

A small point about "picking languages on their own". I think basics of languages can be taught to freshmen, at least selectively, to help those students who may be lacking in previous exposure to computers in high school. (Depending on the university, this may or may not be an issue.) Teaching basics of C or Java or, I don't know, Python, whatever, this way does not turn a university in a Java school or anything like that. Indeed it may be as useful as remedial classes in calculus.

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

#20
----

It should be mandatory that all software and hardware engineer do #1 / #2 / #3. All embedded software engineers and ALL digital design enginers should also do #4.

#1 - How to program a computer at its lowest-level? Write an assembly program, then convert it BY-HAND to hex, then load it into a single board computer using one switch per bit of the address and data buses, like an ALTAIR 8800, run it, halt, write down results from data memory. All good software engineers must know things from the very lowest levels.

#2 - Do the above, but use a built-in monitor to download the program via RS232. Use monitor commands to read the contents of memory and perform of monitor tasks.

#3 - Do the above, but download the program via JTAG. Use JTAG to read the contents of memory.

#4 - Do the above but load program in serial-flash / SD / NOR-FLASH / EPROM, then boot from it on a single-board computer.

-----

Study all the popular source control methods, the advantages and disadvantages of each one, hands on use of the most popular ones, configure and setup source control, how to attach to source control via the internet and download source code from completely different systems, including public source code.

----

All the ways to test software. Hands on!

----

Extreme software commenting. Document the heck out of some functions. Learn how and what is important to document.

----

Learn how to write software specifications. Learn how to read software specifications and implement a program.

----

Write a manual to document how a completed software program runs.

----

Learn how to communicate with the opposite sex.

Learn how to communicate with managers.

Learn how to communicate with fellow engineers.

----

Learn how to write effective emails...without rambling and not do other mindless stupid things.

----

How to install and uninstall software from every version of windows / linux 2.6 / mac 10.x.

----

likely many other important things that I've forgot to include :)

Post reply on HN