View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Discussion 1 - G. Stepanov

The problem of teaching object-oriented programming(part 1) by Michael Kölling

This paper dicusses the useage of C++, Java, Smalltalk, and Eiffel to teach object-oriented principles. First, the author establishes that the best time to teach O-O is in the entry-level course. Because of this, the analysis is oriented towards the programming experience more than anything else. He then proceeds to setup several criteria for what makes a good language to use for that purpose. These criteria are: clean concepts, pure object-orientation, safety, high level, simple object/execution model, readable syntax, no redundancy, small, easy transition to other languages, support for correctness assurance, and suitable environment*. The languages vary quite a good bit in regards to these criteria. Other than the criteria, past user experiences are taken into account, as well.

All four of the languages compared fail the clean concepts criteria. Each has something about it that goes against the concepts of O-O and thus makes it more difficult for students to understand. C++ does not live up to any of the standards the author lists. Because the main goal of C++ is to remain as efficient as C and because of its backwards-compatibility with C, C++ does not try to make it easy for the programmer to use and understand it. The main problem with Eiffel is that there is no good learning environment to go with it (as of the writing of this paper). Though Kölling believes that the environment is one of the most important parts of a teaching language, he states that Eiffel would be the best one of the four otherwise for this purpose. Smalltalk seems like a very good language for teaching O-O as it is more object oriented than most other languages. In Smalltalk, "everything is an object" is key, and this is a good view for beginner students to take. However, the language's obscure syntax and the overwhelming size of its libraries are likely to frustrate programmers. Java seems like another good candidate, as it's been often praised for its good support for O-O concepts. Unfortunately, this praise came mostly from comparing it just to C++; since C++ failed all our criteria, however, this makes the appraisal rather biased. Java has very similar syntax to C++; plus it also requires that syntax to be introduced in the very beginning with class and method declarations. This makes it very hard for a beginner to understand what is going on (and thus not understand the concepts). And so, though some are better than others, none of the four languages discussed in this paper are an ideal solution for teaching O-O concepts.

In his discussion, Courtland Goodson says that Java is not a true O-O language because it has non-object primitives. Kölling also criticizes Java for not having the basic types as Objects and states that this causes problems. On the other hand, that paper states that a true O-O languages must have encapsulation and that Smalltalk is one of those. Kölling, however, disagrees; he says that Smalltalk has very poor support for encapsulation and thus does not pass the clean concepts criteria.

*taken directly from the paper, minus formatting

Links to this Page