This was not what many of us were told was going to be the charter of this committee. Instead it appears to be an effort to whitewash the issue. (See the history of SIGCSE involvement in this - including notes of meetings.)
At the time that the proposal to change the AP course to C++ was made by the AP CS committee there was not actually a reasonable alternative language available. Pascal's use was declining (though it was still dominant), and people were looking for other alternatives. More people were moving toward C and C++ than other languages. The committee apparently believed that movement would eventually include a majority or healthy plurality of departments. A lot of us disagreed. (By the way, the latest figures that I have seen on language choice for CS1 have C in 4th place - behind Pascal, Ada and Scheme, and C++ in 6th place - behind Modula). The combined numbers for C and C++ give 16.5%, the same as the number 2 language, Ada, and well behind Pascal at 35.5%.)
I think that the weight of evidence no longer supports the belief in the eventual dominance of C++. Indications (for instance, reports on vendors from the OOPSLA conference, comments at panels, etc.) are that many programmers and organizations are rejecting C++ as being too complex and unreliable. Somewhat surprisingly, there are some indications that some are moving to Smalltalk as an alternative. (For example, Smalltalk seems to be the language of choice for many on Wall Street.) I personally don't favor Smalltalk as the language for a standard introductory course, but there is a new language which is a good alternative: Java.
Now Java and HotJava have been greatly over-hyped. In spite of this, however, Java is actually a very reasonable language (in contrast to C++). It retains the C++ syntax (unfortunately, from my point of view), but greatly simplifies the language. For example, all objects are references (implicit pointers), methods are virtual (unless declared otherwise), only call-by-value is supported (i.e., can't change that implicit pointer - can send messages to parameter which may result in a changed state), and garbage collection is supported. There is no need of having pointers in the language, so they are not supported (though aliasing and copying vs. sharing issues still arise). Arrays are actually safe (i.e., bounds are actually checked at run-time - though the checks may be optimized away). Most of these are features that one would find in a modern object-oriented programming language (e.g., Eiffel, Smalltalk, and to some extent Think's Object Pascal). The goals of Java (including architecturally neutral, portable, reliable, safe, long-lived, simple, ...) are usually ones that we share in introductory courses.
There are many fewer ways to screw yourself in Java than in C++. I believe the quote from Stroustrup is that in C it is easy to shoot yourself in the foot, in C++ it is easy to blow your whole leg away. Java designer James Gosling describes Java as "C++ without the guns, knives, or clubs". A major benefit of Java over C++ (to experienced programmers as well as introductory students) is that Java has a fairly simple conceptual model. The advantages of Java over C++ at this point seem overwhelming. I know in my department several faculty members are considering how we can move first our data structures course (CS 2) and then our intro course to Java. (This from both people who like C++ and those who hate it!) On top of everything else it even has sex appeal to students because of its use in web browsers and good supporting libraries for graphics.
Will Java be the solution to all of our problems? It's probably too early to tell right now, but I suspect it will be pretty obvious within the next 12 months, and it looks now like Java is going to be a winner. If this happens, very few schools will be teaching C++ in introductory courses by 1999, when the new ETS exam is first given. So, what should college faculty concerned about this do? I recommend the following:
Two last notes on Java:
Kim Bruce Professor of Computer Science Williams College (former member of ACM/IEEE CS joint curriculum task force responsible for ACM/IEEE CS Computing Curricula '91)firstname.lastname@example.org