January 5, 2006


Joel Spolsky has a very thought provoking article on his Blog, Joel on Software. It's basically about what the main teaching language of CS programs should be, C or Java:

Therein lies the debate. Years of whinging by lazy CS undergrads like me, combined with complaints from industry about how few CS majors are graduating from American universities, have taken a toll, and in the last decade a large number of otherwise perfectly good schools have gone 100% Java. It's hip, the recruiters who use "grep" to evaluate resumes seem to like it, and, best of all, there's nothing hard enough about Java to really weed out the programmers without the part of the brain that does pointers or recursion, so the drop-out rates are lower, and the computer science departments have more students, and bigger budgets, and all is well.

As you can see, he takes no prisoners. His idea is an interesting one, central to the whole idea of what a CS education (or any education, for that matter) should be about: getting a job or learning how to think. Spolsky definately comes down on the learning how to think side, drop out ratio and enrollment numbers be damned.

As we can all imagine, there's been plenty of buzz about this on the compsciblogosphere and that's a very good thing. Personally, I think CS programs have to find a balance. Yes, hard topics need to be covered and those not cut out for the field need to be gently culled, but students also need to get some marketable skills to get them that all-important first job. Another thing that needs to be pointed out is that there is really no longer one kind of "computer science," but really a whole range of paths including systems, software engineering, databases, communications, applications areas and a whole lot more. It's probably no longer such a good idea to think of CS and CS education as a monolith.

I plan on forwarding the article to the members of my comp sci faculty, hoping they will get something out of the debate. One other essay on Spolky's very interesting site is his definition of a good developer. A detailed description of how some people are just way better at creating software than other people and how is really worth getting those people to work for you.

As for your truly, when I took my CS degree, back when dinosaurs roamed the earth, Pascal was the main teaching language with C only just starting to gain popularity. Fortran (the first language I learned) still had a lot of adherents rather than its current status as a niche language. I did learn C, but as part of an elective rather than a compulsory part of the program. I also learned COBOL. via Topix CS.

No comments: