COMP 473: Object-Oriented Programming

Course Information


This course is heavily project-oriented. Students study each major topic in the context of a substantial programming project. The reuse of existing class libraries and software components is emphasized. Grading will be based upon the following components: programming projects, quizzes, in-class exams, and the final exam.


Object-oriented programming has become the dominant software development paradigm of the 1990s. This course assumes familiarity with the main constituents of the object-oriented methodology:

  • OOP = abstraction + inheritance + polymorphism


You need to know Java, C#, or a similar object-oriented language, data structures, and fair sophistication with OOP - some experience with designing interacting, cooperating classes that would come in an intermediate discussion of software patterns. Software engineering is recommended but not required like the background listed above.

Building on this foundation, the course studies three major topics:

Design Patterns

First, the course discusses patterns, reusable solutions to recurring software design problems. Common design patterns such as Composite, Decorator, and Command typically involves several classes related by composition and inheritance.


Next, the course examines how object-oriented language features such as composition, encapsulation, inheritance, and dynamic binding can be implemented. These features are studied in the context of an interpreter for a simplified object-oriented language.


Finally, the course explores programming with reusable components. Specifically, the standard features of component architectures are discussed: properties, events, methods, and persistence, and introspection.


Students will have an understanding of Design Patterns, Implementations, and Components in terms of OOP practices.


See the Current Course Syllabi.