Our approach to teaching object-oriented programming is distinguished
by its strong emphasis on object-oriented design, in particular the
very early presentation of encapsulation, inheritance, and
polymorphism, and the introduction of design patterns with examples
that can be understood and used in the introductory course. In
addition, all examples and programs are graphical from the very
beginning.