bmongar has the best post I've seen on this topic: both correct and succinct. I teach Java at Northeastern University, and I've lived these tradeoffs.
Smalltalk is pure OO, but introductory students aren't sophisticated enough to understand the beauty of immutable numeric singleton objects and other such OO extremes. It is my second choice for a strictly OOP/OOD course in the 2nd year, after Java.
C++ is the best language out there for production of real application software. It is difficult to teach and basically requires that a lot of difficult low-level concepts are pushed into the first year. It is my first choice for a strictly software design course in the 2nd or 3rd year.
Java is the best language for introductory programming and here's why:
It (like many languages) can be used to teach the fundamental programming structures (eg. selection, iteration, &c.)
It provides cross-platform GUI, IO, and network libraries so lab work can be performed on any machine. (This is huge for students, IMHO.)
It provides a near-complete, elegant OO framework, including reflection, action objects, separation of specification from implementation.
That's all you need in the first year. They need to learn abstract thought; a lot of the other posts ignore that fact.
Check out our pedagogical Java toolkit available here. This summer we are moving from toolkit implementation to developing a real good Java curriculum.
bmongar has the best post I've seen on this topic: both correct and succinct. I teach Java at Northeastern University, and I've lived these tradeoffs.
Smalltalk is pure OO, but introductory students aren't sophisticated enough to understand the beauty of immutable numeric singleton objects and other such OO extremes. It is my second choice for a strictly OOP/OOD course in the 2nd year, after Java.
C++ is the best language out there for production of real application software. It is difficult to teach and basically requires that a lot of difficult low-level concepts are pushed into the first year. It is my first choice for a strictly software design course in the 2nd or 3rd year.
Java is the best language for introductory programming and here's why:
That's all you need in the first year. They need to learn abstract thought; a lot of the other posts ignore that fact.
Check out our pedagogical Java toolkit available here. This summer we are moving from toolkit implementation to developing a real good Java curriculum.
PBk