Cours MODULA-2 VERSUS C++, tutoriel & guide de travaux pratiques en pdf.
The basic assumption on the students attending the course is that they do not have any programming experience yet. This assumption usually holds for roughly ‘75~0 of about 150 students enrolled, although the number is decreasing steadily because more and more high schools start offering some programming education.
To satisfy this target group, we have to start teaching programming from scratch, while sacrificing higher concepts such as inheritance and polymoq?hism. The subset of C++ taught roughly matches the language features of Modula-2 and may alternatively be described as “asafer C with classes and templates”. Genuine object orientation is offered in more advanced courses, which are hopefully going to take advantage of the new basic education in the first year.
The course consists of 13 weeks with 135 minutes of lecture each, followed by two hours of laboratory exercises in groups of approximately 10 students supervised by a teaching assistant, in which 3 assignments have to b completed using Borland C++ 3.0 in a DOS environment.
Each student is randomly assigned one out of 10 to 12 problems per assignment category. All assignments are given in advance at the beginning of the course, with the approximately equally distributed deadlines. Students are encouraged to hand in their results as soon as they are done in order to save time for the following assignment.
Assignment I is a simple first program of about 100 source lines that does not need any sophisticated data structure, e.g. solving a system of three linear equations in three variables. However, procedural abstraction is strongly encouraged already at the very beginning. The over-proportional time allotted to Assignment I allows for getting used to the lab and to the PC environment, playing around with some mini-examples as presented in the lectures etc.
Assignment II typically needs arrays, pointers and simple records. Examples are vector and matrix arithmetic or simple hashing schemes.
Assignment III involves at least one user defined data type, which is to be designed as a reusable part in advance, tested in a test bed and finally used in the given application.
It is also expected to be generalized to a template, once it is able to play its primary role within the application.
Assignments are marked by the teaching assistants. After Assignment II, a first oral examination takes place, which is mainly based on a discussion of the solutions of the first two assignments, thus offering an opportunity to clarify any misunderstandings that might have occurred. At the end of the course, a final oral exam takes place, emphasizing on the more theoretical concepts of the language and on programming in general. The grading policy is to judge primarily between “pass” and “fail” and to bias the distribution of positive grades (I=very good to 4=sufficient) towards the lower range in order to give an incentive award.
As accompanying material, the students are given handouts tailored to the lecture. As supplemental textbooks, we recommend Lippman’s C++ Primer  for the beginners and Stroustrup’s book  as well as a German textbook  for those who already have some programming experience.
COMPARISON OF RFSULTS
As the decision in favor of C++ was not reached unanimously, we tried to prepare a comparison of our first results to those of the preceding Modula-2 course. All grading data of the Modula-2 course were stored and the set of assignments was kept the same, although the language dependent wording was changed accordingly to C++l.
The resulting data set consists of 172 and 140 cases from the Modula-2 course and from the C++ course, respectively. For each case, we basically recorded the teaching assistant’s scoring of the three assignment. Each score is made up of four components evaluating different aspects of the solution:
● program structure
● algorithmic correctness
● quality of the user interface
● quality of the documentation
While these scores measure the quality of the student’s products, another dependent variable, the result of the final exam, is linked to hislher understanding of the underlying concepts. Finally, we may also observe the dropout behavior in each course.