Version: 5.2.1

Object-Oriented Design

Fall, 2012

Catalog description:

CS 3500 Object-Oriented Design 4 QH

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.

Prerequisites

CS 2510 or equivalent

Course objectives

The course has evolved over the years. A better description would be:

The course presents the theory and practice of object-oriented programming. The course enhances students’ understanding of teh 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.

This section of the course will attempt to follow closely the Professor Clinger"s Section of this course. Make sure you follow the posts at his web page as well, though we will try to reproduce here the most important issues that arise.