This paper discusses what I consider fundamental
concepts in teaching object oriented programming and
design: contracts, patterns
and events.
In particular, we concentrate on the issues encountered
in teaching these concept.
The discussion is based on my experience in teaching
OO at the Vrije Universiteit, using
The structure of this paper is as follows. First, an overview of the approach taken in teaching OO is presented. Then the notions of contracts, patterns and events are treated in more detail. For each notion some background will be given, its relevance will be argued, and the problems encountered in teaching it will be discussed. For each concept, moreover, a metaphor will be presented that is meant to guide the intuition. We will also look at some examples demonstrating a possible realization and application of the concepts discussed and, finally, we will briefly look at the theoretical foundations for these concepts.