I bumped into an interesting article Computer Science Education: Where Are The Software Engineers of Tomorrow which is really about why Java is poor first language to learn. (I found this by way of The Inquirer -- lots of funny comments). The authors are professors at NYU.
Juicy quotes include:
Java ... 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!
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++.
It's not a slam on Java, it's slam as using it as a first language, or perhaps how Java and programming are taught together. The author insist everyone must learn C, C++, Lisp, Java, and ... Ada. Huh? Well, the authors also run some Ada company. Oh well.
An interesting read, whether or not if you agree with their conclusions.