Insufficiently Random

The lonely musings of a loosely connected software developer.

Sunday, January 15, 2006

The Perils of JavaSchools - Joel on Software

I just finished reading one of Joel's latest: The Perils of JavaSchools. He's right.

I'm not a graduate of a Java school, but I am a graduate of a C++ school. Where C++'s STL library is taught before dynamic memory allocation. Or recursion. Or data structures of any type.

By the time students actually get to the data structures course they have been writing all of their assignments with std::vector and std::map. They don't understand how generic types work, but they can use them to implement a very poor spell checker. They have no desire to learn how std::map might be implemented, as they think that all they really need to know is #include <map>. It might as well be Java, where at least they have to deal with the challenge of downcasting when accessing a java.lang.Map.

And forget about teaching the mystical concepts of const-correctness in C++. My entire undergraduate degree at RPI was composed of instructors avoiding const-correctness "because it is so difficult that even PhDs can't do it right". Riiiiiight. I know many professional programmers get it right. On a daily basis. Without a PhD. Of course many also don't get it right, but that's not an excuse to not teach it, especially when the entire undergraduate program is based around C++!

Many students in the database class that I am a teaching assistant for seem to have trouble with basic b-trees. The prerequisite for this class is data structures. If they didn't learn b-trees in data structures, what did they learn? Arrays of ints? Many of them also seem to have trouble with the concept of a disk address. Its a pointer! I wonder if they could even answer the age old question "how do pointers differ from arrays in C?".

RPI never really taught Scheme, Lisp, Prolog, Haskell, or ML. Sure it has the typical language survey course, but this course whizzes though these languages and the projects used aren't very in-depth. I doubt students really learn lambda-calculus from it. I certainly didn't learn it from that course! I learned the basics of lambda-calculus from working on my own in Erlang years before I took the language survey course. If it wasn't for that I doubt I would have learned it at all.

Now that I am a graduate student in RPI's PhD program, I certainly do wonder how well prepared I am for it. I wonder if I would be more prepared if I had an undergraduate program similar to what Joel had at Penn instead of the one I had at RPI. I think Joel hit the nail on the head when he pointed out that many JavaSchools are turning out students with 4.0 GPAs who aren't ready for graduate school.

By the way, I had 5 years of Latin in high school. Unfortunately for me the last 3 years I had a pretty lazy teacher. Most of our Latin classes were focused more on TV shows like Beverly Hills 90210 than on the classics. So needless to say I didn't get as much out of the language as I should have but I did take it.


Post a Comment