C++ is the language most likely to be taught after Java. Learning C++ exposes students to issues that Java hides, including pointers and memory management. Introducing C++ during (or just prior to) a data structures course might be appropriate. C++ and Java are similar enough that students can pick up C++ in a fraction of the time it would take without prior knowledge of Java. Students will view C++ as a more baroque version of Java, spending most of their time learning pointers and memory issues, as well as mastering multiple inheritance, templates, and other advanced C++ features.
A logical place for C would be in a class that also covers UNIX programming, since UNIX system calls are done using C and since many UNIX tools use a C-like syntax.
The transition to Smalltalk should be easy regardless of where it occurs in the curriculum. The main issues will be syntax, a different class library, and the need to learn a different kind of program development environment.
Java has enough in common with C, C++, and Smalltalk that the transition to any of these languages should be relatively painless. In many cases, it won't be necessary to spend an entire course on the transition; instead, it can be managed at the beginning of another course. (A UNIX course, for example, could spend the first couple of weeks on C.)
© 1997 ACM