COMP 473: Object-Oriented Programming
COMP 313. You need to have knowledge of 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.
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
Building on this foundation, the course studies three major topics.
First, the course discusses patterns, reusable solutions to recurring software design problems. Common design patterns such as Composite, Decorator, and Command typically involve 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.
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.