Leave out the Modeling when Teaching Object-Orientation to Beginners
Abstract. This position paper advocates an extreme position: Object-oriented Modeling (OOM) and Object-oriented Programming (OOP) should be kept clearly separate in teaching object-orientation in the first year, and OOP should be introduced first, with OOM
Leave out the Modeling
when Teaching Object-Orientation to Beginners
Axel Schmolitzky
Software Engineering Group
University of Hamburg, Germany
+49.40.42883 2302 schmolitzky@acm.org
Abstract. This position paper advocates an extreme position: Object-oriented Modeling (OOM) and Object-oriented Programming (OOP) should be kept clearly separate in teaching object-orientation in the first year, and OOP should be introduced first, with OOM following later. This position is based on several observations that were made in teaching OOP to beginners over the last six years. It is formulated deliberately as an extreme position to serve as basis for a lively discussion.
1 Introduction
Object-oriented programming (OOP) is an important building block in software engineering educa-tion. Students should be able to construct running code that serves its purpose. This requires several tech-nical skills and a good understanding of programming language concepts.
Object-oriented modeling (OOM) is an important building block in software engineering education. Students should be able to identify and transfer originals in some application domain to object-oriented entities.
Thus students should become fluent in both OOP and OOM. The only question is: How to start? OOP first, modeling later? Modeling first, programming later? Or blend them, because OOP and OOM are tightly interrelated anyway? Another question is: When to start with OO? In the second or even third year, as an advanced topic, starting with imperative (e.g. with Pascal) or functional (e.g. with Scheme) programming in year one? Or should OO education start from day one, going objects first?
We have a clear position in this matter, grounded on our experience in teaching object-oriented pro-gramming and modeling to beginners over the last six years [ScZ07]. We believe that there should be a clear focus on OOP in the very beginning, leaving OOM to second semester earliest. We will try to ex-plain our position.
The following assumptions are the venturing point of our discussion. While the thesis of this paper is quite extreme, these assumptions should not be too controversial for this workshop.
Java as the first programming language
Currently, the Java programming language is a popular choice for teaching OOP. Besides its economic advantages (Java has become a relevant language in commercial data processing), especially its compara-tively simple object model constitutes an advantage in education: Java only knows one passing mecha-nism for parameters (per value) and all object types are reference types (manipulation of their instances is exclusively feasible via references); pointer arithmetic is impossible and the language itself guarantees that object boundaries are maintained. We have been using Java for several years in undergraduate and graduate education. Many textbooks exist for Java, as well as a large number of example programs. Objects First
We apply an Objects First approach in teaching OOP, starting with objects from day one. BlueJ
[KQPR03] is one tool that enables such an approach, and we have been using BlueJ for several years now in first year programming education.


