Modula-3 as a Teaching Tool
Modula-3 is very well suited for teaching: simple yet powerful, and safe. It avoids the complexity of popular languages. It can be used to demonstrate modules and interfaces, object oriented programming, multi-threading, graphical user interfaces and even distributed programming. Since less time is spent by students and teaching assistants chasing dangling pointers and corrupted data, more time is available for learning the important concepts.
Several informal studies seem to support the previous observation. At the University of Cambridge, a Computer Science course teaches ML as an introductory language at the beginning of the freshman year, and then uses Modula-3 to develop imperative programming at the end of that year. Further lectures on advanced features of the language are given early in the second year, together with separate lectures on other, specialized languages.
The course has been given to about 70 students each year since 1990, and has developed with the language. It ties in with other lectures on data structures and algorithms, software engineering and concurrency. Modula-3 is used for student group projects in the second year and for about a quarter of individual projects in the final year. The interesting thing is student using Modula-3 tend to earn higher grades than those using C/C++.
Furthermore, the Royal Institute of Technology had a programming project course where they recommended students to use Modula-3. However, some project groups chose to use C++ and some chose Borland Pascal. Most of the groups using Modula-3 did complete the course in time, while many of the others did not:
Modula-3 - 85 % in time (22 of 26)
Borland Pascal - 67 % in time (2 of 3)
C++ - 0 % in time (0 of 4)
All the students that considered themselves "not so good programmers" chose Modula-3, and all the students that chose C++ already knew the language, and were quite experienced programmers. In spite of this the Modula-3 groups completed their work long before the C++ groups! Teachers reported that the code the Modula-3 groups wrote was much better than the code of the C++ groups.