OOPSLA97 Workshop:
Resources for Early Object Design Education
TITLE:
Blue - A System For Teaching Object-Oriented ProgrammingRESOURCE CONTACT:
GOAL:
To provide students with a thorough understanding of object-oriented concepts, especially object-oriented design, byAUDIENCE:
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):
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 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: