Message of the Day:

Bored? You'll find something new to do at MindThrow! Be a pal and Digg the MindThrow launch announcement (only takes 30 seconds).

Another article on about plunging computer science education requirements from a couple of college professors who have witnessed the decline first-hand:

Let us propose the following principle: The irresistible beauty of programming consists in the reduction of complex formal processes to a very small set of primitive operations. Java, instead of exposing this beauty, encourages the programmer to approach problem-solving like a plumber in a hardware store: by rummaging through a multitude of drawers (i.e. packages) we will end up finding some gadget (i.e. class) that does roughly what we want. How it does it is not interesting! The result is a student who knows how to put a simple program together, but does not know how to program. A further pitfall of the early use of Java libraries and frameworks is that it is impossible for the student to develop a sense of the run-time cost of what is written because it is extremely hard to know what any method call will eventually execute. A lucid analysis of the problem is presented in [4].

We are seeing some backlash to this approach. For example, Bjarne Stroustrup reports from Texas A & M University that the industry is showing increasing unhappiness with the results of this approach. Specifically, he notes the following:

I have had a lot of complaints about that [the use of Java as a first programming language] from industry, specifically from AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin, and more. [5]

He noted in a private discussion on this topic, reporting the following:

It [Texas A&M] did [teach Java as the first language]. Then I started teaching C++ to the electrical engineers and when the EE students started to out-program the CS students, the CS department switched to C++. [5]

Computer science needs to fork and create a "technical" branch X that fulfills the analogy:

electrician:electrical engineer::X::computer science

Rand Simberg agrees.

(HT: GeekPress.)

0 TrackBacks

Listed below are links to blogs that reference this entry: Colleges Don't Teach Computer Science Anymore 2.

TrackBack URL for this entry: http://www.mwilliams.info/mt/mttracks.cgi/4736

4 Comments

mauyr.myopenid.com Author Profile Page said:

this is something i've noticed as well, and i agree with your suggestions and thoughts.
I'm glad you're not saying that the plumber approach is worthless -- there is clearly a demand for lots of people who can do it, and it is obviously usually better to rummage through the drawer than to reinvent the wheel. And, one would hope that as time goes on, more problems get solved, and the art becomes choosing the best existing solution (which may require a good understanding of those solutions).

(I'd question whether it's necessary to award degrees for plumber-programming, but it seems everybody wants to have something called a degree these days -- you can get degrees in actual plumbing, for example).

c++ is a hell of a language. I don't use properly it but I enjoy playing with it, and it's definitely the kind of language that enhances my understanding of the languages I do use, since everything is so exposed. So it gets my vote as a teaching language, regardless of how much or how little it is used in industry.
As a first language though... since we're talking about CS undergrads, it's obviously not going to be their real "first language", but I wouldn't wish it on anyone for an introduction to programming. I grew up with basic, but that was a different age. If I were starting out again, I think C would be a better starting place. I prefer small to big anyway, but with C you can get a proper feel for what the computer is really doing. on the other hand, C is really, really hard, but since we're talking about teaching and not getting stuff done, that's not a real problem.

Ben Bateman Author Profile Page said:

I used to enjoy programming as a hobby back in college, but I warned away from computer science as a major because I was told that they obsessed over obsolete languages from the seventies, like Fortran and Cobol. I'm not sure how accurate that was, but that was what I heard.

C++ was what made me give up programming for fun. I just wanted to play with a dictionary of low-level commands and see what I could construct. It was like playing with Legos. But then the objects came, and it was no fun any more. I couldn't even create a variable without worrying about which objects could see it and which couldn't, and passing data from one function to another seemed outrageously complex.

I understood why they had gummed everything up: Programs had become so large and required so many programmers that they needed a system with which to isolate clusters of data and functions, to keep things organized and prevent people from stepping on each others' variables. But it sure ruined things for a hobbyist like me.

Ben: If you have any remaining interest in programming as a hobby, I highly recommend that you look into C#. It's a beautiful, powerful language that hides a lot of the complexity that you're talking about. I love using it, it's a lot of fun. There are still many things you need C/C++ for, but for fun stuff C# is great.

mauyr.myopenid.com Author Profile Page said:

BB: Objects can be fun, in fact the lego analogy works much better in once you start using objects. But I understand what you mean about C++: it feels like you're programming the compiler rather than programming the computer. That's more to do with C++ retaining backwards compatibility with C than a problem with objects themselves. C# breaks that tradition, so it can be quite a lot nicer.
But for many tasks, an interpreted language is an easier and better choice (more maintainable, more cross-platform etc.).

Leave a comment

The comment login system is acting strange. If you get an error message saying you aren't logged in when you are, just reload the comment page and try again. I'm trying to track this bug down, but it's not easy.

Supporters

Email plasticATgmailDOTcom for text link and key word rates.