| ![]() |
REQUIREMENTS FOR A FIRST YEAR OBJECT-ORIENTED TEACHING LANGUAGE
Michael K?lling, Bett Koch and John Rosenberg
Basser Department of Computer Science
University of Sydney, Australia
{mik,bett,johnr}@cs.su.oz.au
ABSTRACT
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.
1 INTRODUCTION
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.
2 REQUIREMENTS FOR 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