Object-Oriented Design

Fall, 2013

Presents a comparative approach to object-oriented programming and design. Discusses the concepts of object, class, metaclass, message, method, inheritance, and genericity. Reviews forms of polymorphism in object-oriented languages. Contrasts the use of inheritance and composition as dual techniques for software reuse such as forwarding vs delegation and subclassing vs subtyping. Fosters a deeper understanding of the principles of object-oriented design patterns, and the use of graphical design notations such as UML (unified modelling language). Basic concepts in object-oriented design are illustrated with case studies in application frameworks and by writing programs in one or more object-oriented languages.


CS 2510 or equivalent

The course assumes proficiency with the systematic design of programs in a class-based language and some mathematical maturity. It demands curiosity and self-driven exploration and requires a serious commitment to practical hands-on programming.

Course objectives

The course presents the theory and practice of object-oriented programming. The course enhances students’ understanding of the concepts of object, class, message, inheritance, and genericity. The course covers a basic model for objects; the principles of types and polymorphism in object-oriented programming languages; different forms of abstraction; and theory and practice of reuse. The course also introduces students to some object-oriented design patterns that practitioners have found useful.

We also plan to add some material on most commonly used types of algorithms and data structures.