Mar 7, 2008

The Value of a Computer Science Degree

After graduating and working for a while, I began to wonder what the value of my computer science degree was. I don't really use much of what I learned, in fact the majority of things that I use at work are things that I learned on my own time. There is the rare occurrence when I have to reason about the efficiency of a piece of code, but a lot of that is common sense and the rest you can ignore because computers are fast enough to handle it anyway.

I had my first experience with judging new graduate resumes the other day and began to wonder, what is the value of the degree? The majority of the students I found didn't really do anything on their own time, they only had experience with things from random classes they took.

So I'm thinking, maybe we should overhaul the computer science programs at universities. There is a lot of fluff in there about lambda calculus, flip-flops and NP-completeness that we don't really need, scrap all that. How often are students going to be designing parsers? Get rid of that. We should start giving courses on professional software development, with chapters on things like version control and how to use professional IDEs - you know, the useful stuff.

Algorithms courses are good, but they go into too much detail. We don't really need to know about characteristic equations or the exact theta-complexity of the algorithm, because if it runs slow, we can just buy a faster one. This is a free market after all. Just teach the kids how to use a quicksort() function and be done with it.

We should give big projects at the beginning of the course, and then change the requirements at random points in the semester. This will teach the students how to adapt to changes. It will show them what the work world is really like. Don't tell them exactly how to do everything, just tell them what you want and they have to do it.

With all these courses stripped out, we can now make room for the real stuff. There should be advanced Java courses teaching about J2EE, JSP and Struts, things like that. Also another one that teaches advanced C# programming with .NET. The C++ classes should teach useful things like how to make a window. I have never seen anything on resource scripts while in university, this should be remedied.

The only room for Linux in the degree is to teach students how to manage a server. Teach them things like configuring LDAP and Apache, security, and the like. Programming under Linux is inefficient and is not portable to Windows, which is the primary platform that software should be developed for.

After this reform, the universities will be producing students who have hands-on experience with real-world software. This will increase the efficiency of the software market tremendously, as we will no longer have to worry about training new employees. It will also benefit the students, as they will have the skills to tackle today's changing world and can compete in the highly competitive job market.

It is important to note that the majority of this blog entry is in a sarcastic tone. Please do not take it seriously.

No comments: