page 1  (5 pages)
2to next section

- 1 -


Michael K?lling, Bett Koch and John Rosenberg Basser Department of Computer Science University of Sydney, Australia


Interest in teaching object-oriented programming in first year computer science courses has increased substantially over the last few years. While the theoretical advantages are clear, it is not obvious that the available object-oriented languages are suitable for this purpose. None of the existing languages is appropriate for teaching objectoriented principles. In this paper we discuss the requirements for an object-oriented teaching language and draw attention to the deficiencies of existing languages. In particular, the paper examines C++, Smalltalk, Eiffel and Sather. Finally we outline characteristics of a new language, specifically designed for teaching purposes.


Over the last few years the object-oriented approach to system design has become widely accepted in industry as a valuable paradigm and has been adopted by many large companies. Partly as a result of this, and the advantages from a software engineering point of view, the use of object-oriented technology and languages is now taught at some point in most computer science courses.

Initially object-oriented systems were seen as an advanced topic and were taught in higher year courses. However, it is now being realised that object-oriented concepts are, more generally, a good basis upon which to teach fundamental programming skills, the usual aim of a first year computer science course. The possibility of using an object-oriented language for first year teaching is being seriously considered in many institutions.
Several arguments strongly support the use of an objectoriented language in first year:
? Object-orientation encourages well structured programming, which is one of the most important lessons we try to convey to first year students.
? Re-using existing code can be taught in addition to the development of new code, leading to a more realistic perception of the tasks expected of a programmer. ? The ability for students to make use of ready-made objects in their applications opens a wide range of possibilities for real-world and interesting examples and exercises.

? Important software development concepts, such as evolution and re-use, can be introduced and experienced through object-oriented techniques at an early stage.
? Problems with the paradigm shift in moving between object-oriented and non-object-oriented environments seem to be reduced. It has been found that many students whose first programming language is a procedural language, such as Pascal, experience problems in adjusting to the object-oriented paradigm [3]. On the other hand, switching from an object - oriented language to a non-object-oriented one is not anticipated to cause as much difficulty (provided the syntax is not too different) [2].
All of these arguments support the idea of using the object-oriented paradigm in teaching programming in the first year of a computer science course.

Unfortunately when one examines the object-oriented languages which are available, they all have major deficiencies which make them inappropriate as a first year teaching language. We would contend that there is a major need for a new object-oriented programming language specifically designed for teaching. Such a language would serve a similar purpose to that of Pascal in the 1980s.

This paper is organised as follows. In the next section we identify the requirements of an object-oriented teaching language. We use these requirements to evaluate a number of existing object-oriented languages which may be candidates for a teaching language. We conclude from this evaluation that none of these is suitable and in the subsequent section we outline some of the features that may be included in a new language.


The requirements for an object-oriented language are reasonably well understood and there is no need for us to elaborate these here. However, there are several specific requirements for a first year teaching language as follows. 1. The language should support clean, simple and welldefined concepts. This applies especially to the type system, which will have a major influence on the structure of the language. The basic concepts of object-oriented programming, such as information