While Modula-2 is a very good language for the basics of advanced data structures and algorithms, and for introducing software engineering, it lacks crucial features to support abstract data types and object-oriented programming. To address these deficiencies, we have moved to C++. We recognized that the additional material would make extra demands of students, so the topic has been lengthened by almost 50%, from 7 to 10 weeks.
The approach taken in the course is a relatively radical one. Instead of starting with the parts of C++ that most resemble Pascal, the course starts immediately with classes and objects, and introduces constructs such as loops in the context of extending existing classes.
Initial experience is that students whose first language is Pascal are confused by object-oriented programming, and introducing classes early has the benefit that they have the entire course to grasp the concept. This has the negative effect that they take longer to learn simple syntax (loops etc.).
This paper reports on the strategy taken in the course, as well as student responses to it. It also reports on the underlying educational methodology, and how this has been accepted by the students.