Digital Analogue
Comments: On the pedagogy of intro CS

Screw Java. They can learn syntax on their own. Teach them Smalltalk. Class hierarchies are a small-minded hack to provide static type-checking. You don't bother with static type-checking in your first teaching language (Scheme), so why bother in your second? Java is a practical language, but not a good teaching language. Smalltalk, however, is as purely object-oriented as Scheme is functional. It also gives you first-class functions and such, like Scheme.

Teach some Java at the end of the course if you have to. But teach them object-oriented programming with a properly object-oriented language. (Note: there is a GNU Smalltalk environment.)

Posted by Greg at 3:08pm on 16 Jul 2004

I have difficulty enumerating the many, many ways in which this suggestion fails to be at all useful. Already, I can't start the class in Scheme; why do you think I'd be able to add Smalltalk? You imply that because my first-language-of-choice doesn't have static types, the second needn't; indeed, why ever add anything at all? I'm not sure if the comment about hierarchies is just a diss on type inheritance or on the entire concept of type checking, but either one's going to require a lot more backup than just a bald statement like that if you're going to try to convince me. In any case, Smalltalk isn't as purely OO as you might think. Self, now Self is OO.

Posted by blahedo at 10:58pm on 17 Jul 2004
Actually, it was tongue-in-cheek language war flamebait. Though I may get to do some work in Smalltalk pretty soon. It really wasn't intended to be a particularly useful suggestion.
Posted by Greg at 6:15am on 19 Jul 2004