To Computer Science majors at CSUN

In the late Spring of 1996, the faculty of computer science voted not to continue teaching C++ in the first courses of the major (comp110 and comp182). Instead, they decided to go back to the previously used Modula-2 while they considered what language to finally adopt.

I supported this position, especially the part involving not using C++ for freshman majors. I preferred another language (Oberon/F) rather than Modula be used in the interim, but I would have accepted almost any language other than C++.

I have taught C++ recently in Comp182, as well as Comp106 and Comp 105. I did not mind teaching it to engineering majors in comp 106. It is their only required basic course in computing and C++ is very very commonly used in industry, so they should be introduced to it then.

However the situation is different for computer science majors; they should be exposed to a number of different languages, and should begin their career with a good language. Ultimately they must learn C++ because it is so widely used in industry at this time. C++ has it's place, but I feel that it's place is not in the introductory course. I found it to be a definite obstacle for students in learning computing concepts.

I do not blindly hate C or C++; I have used them considerably. In fact a few years ago I took a leave of absence from CSUN to serve as vice president of a company that makes the leading C/C++ compilers for the Macintosh computer. I even had my name on the compiler. I also wrote a book on C, but did not publish it.

I have expressed my negative view of C++ in the beginning course at several international meetings of the ACM. I also presented a "Birds of Feather" meeting on "C++ in CS1 NOT".

There are many good languages that can be used to introduce computing. Among them are: Ada, Ada95, Eiffel, F, Modula, Modula3, Oberon, Pascal, Scheme, Turing and Umbriel. I could easily accept any of these; some better than others.

I have a very strong preference for a smaller language, rather than a larger one or even a small subset of a larger one. The problem that I experienced in teaching a large one was that many students would prefer learning more of the language rather than using it. They felt that if they just knew more about it then their problem would be solved easier or quicker. They seemed not able to keep both the problem and the language in their head at the same time, so they chose the language. These so-called "language lawyers" were surpassed by other (often poorer students) who worked with the subset. In addition, even if some parts of the language are excluded in the subset, they remain around to cause problems for students.

Years ago CSUN was one of the first schools to adopt the language Pascal. It seemed to be a big risk and initially resisted by many, but ultimately it came to be used in over 90 percent of the schools. It was a great learning language and is still the most commonly used language in universities. However, Nicklaus Wirth, the designer of Pascal improved on it with the language Modula. We at CSUN also used that language for a number of years. Now Wirth has created Oberon, which goes beyond a language to an operating system and to a framework. It is object-oriented, component based and is in fact simpler than its predecessor Modula while being more powerful. It is rather new and different and not adopted by many yet. I would dearly love to see CSUN adopt it and become pioneers as we did with Pascal. More information about Oberon is on this site.

Wirth has created many languages (and also machines). He believes strongly in managing complexity throught simplicity. He resists the bloated "fatware" and featureitis that is becoming so common. He has expressed the fact that computing has stepped back into the late 1960s. He has made a "Plea for Lean Software" which I recommend you read in the February 1995 issue of IEEE Computer magazine.

Anyhow, in the meantime we are using Modula, as we try to decide on a language. This intermediate compromise choice seemed to be the least of evils, especially since we had a number of years of experience in teaching it in the recent past.

So we are trying to make the best of a temporary situation; we realize that it may be difficult for some students to switch languages; but it is also a good learning experience. You don't really know any language until you have learned a second one (that goes for natural languages also).

We have many compilers available for Modula, on many platforms. For the IBM compatibles we have a very good shareware version of FST Modula (which is also object-oriented). For the Macintosh we have MacMeth, which is also a shareware version created by N. Wirth. We have, in addition available another version installed in the Mac Lab, and yet another installed on the new HP workstations, and available in many labs on campus and also via modem from home and elsewhere. The versions are very compatible, and the few minor differences are described on this web site. Many other examples, projects, etc can also be found on this site.

We will have students assistants available to help you with Modula problems; but the assistants will not do your work.

I invite you to share with me your views and especially preferences regarding the choice of the language to be used in the intro courses in the near future. My email address is jmotil@csun.edu.

I wish you success.