OOPSLA97 Workshop:
Resources for Early Object Design Education


TITLE:

Blue - A System For Teaching Object-Oriented Programming

RESOURCE CONTACT:

GOAL:

To provide students with a thorough understanding of object-oriented concepts, especially object-oriented design, by

AUDIENCE:

This resource is aimed at first year students in their first object-oriented programming course. It is intended that it be used for the first two semesters, after which the students switch to another, "real-world" language.

PREREQUISITES:

None.

MOTIVATION:

The system addresses the problem of dealing with the complexity of the concepts associated with object-oriented languages when teaching programming to first year students.

Many educators now agree that it is beneficial to teach OO in the first programming course, but are left struggling with the problems of explaining complex concepts to beginning students. Our opinion is that OO programming does not have to be complex, given the right tools.

The tools needed are (in our view):

Teaching object-oriented design is hard because the right tools are not available. It is difficult to talk about class structures and design if all students ever see are lines of code.

APPLICABILITY:

The system is applicable where a decision about the whole introductory course can be made. For many educators, using Blue will be politically difficult, because the choice of the first year language often leads to long, fruitless debates (Blue is a programming environment and language!).

On the other hand, if a department makes the step to decide to use Blue, we believe its benefits are substantial.

STRUCTURE:

Blue is an integrated programming environment and a programming language. To gain an impression of the look and feel of the Blue system it might be helpful to look at a picture of its main window.

The Language

The Blue language is a very clean, small, and simple object-oriented language. In the same sense that Pascal provided a tool for teaching structured programming, Blue is an educational language that represents the concepts in exactly the same way we want to teach them. An "educational" language does not mean "toy language" - Blue is a general programming language. "Educational" means that we are not forced to do too many optimisations for efficiency. Blue provides, for example, error checking and reporting that is better than that provided in most other systems. This results in some additional memory and runtime overheads, but the effects of these are negligible in a teaching environment.

The Environment

The Blue environment allows the interactive manipulation of classes and their relationship to each other graphically or textually. Objects of any class in the project can be created interactively. In addition, users can interactively call any method of any object. This provides exceptionally good testing facilities.

The class design of the current project is visible on the screen. Blue encourages the student to consiously think about design first by forcing students to introduce classes and their relationships before small scale code is written.

The environment includes an inegrated editor, a compiler, a debugger, a class browser and an online help system.

CONSEQUENCES:

We expect that students who have two semesters of experience with Blue will have a much better understanding of the underlying concepts of object-orientation than students who learned, for instance, with C++.

Blue is designed so that the concepts are directly transferable to other object-oriented languages, such as C++, Java, Eiffel or Smalltalk. However, since the syntax is simpler and consistent, and programming support is better, students can actually concentrate on the important concepts rather than spending their time struggling with syntax.

Blue cannot be a goal in itself. It is not, and never should be, used in real-world, industrial projects. To produce useful graduates and programmers, it must be followed by another language, such as C++, Eiffel or Java. The preparation in terms of object-oriented programming in general, however, is so useful, that we expect a student with one year experience in Blue and one year in C++ to be a better C++ programmer than another student with two years experience in C++.

We also expect a much better understanding of the difference between general concepts and idiosynchrasies of a single languages, a skill that is essential for learning the new fantastic language that will evolve next, and that we really should be teaching to our students.

IMPLEMENTATION:

Blue currently runs on Unix systems (Solaris 2.5 and Linux). A port to Windows systems (Windows 95 and Windows NT) is almost complete. It is available from the ftp address given below.

RELATED RESOURCES:

(unknown at this time)

EXAMPLE INSTANCES:

Blue has been used for first year teaching at the Basser Department of Computer Science, Sydney University, since March 1997. One semester has been completed with good feedback from students and educators.

Student tasks used were a simple adventure game and several simulations (traffic, predetor-prey, lift, flocking) that were developed by groups of students. The kind of project used, though, is very much independent from this system, and I am sure that many of the ideas outlined in this resource collection can be applied to Blue.

REFERENCES: