COMP 473: Object-Oriented Programming
- Credit hours
- 3
- Prerequisites
- COMP313
- You need to have knowledge of Java, 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.
- You need to have knowledge of Java, 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.
- Description
- 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.
- Design Patterns
- 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.
- Implementation
- 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. The interpreter itself is written in Java.
- Components
- Finally, the course explores programming with reusable components. Specifically, the standard features of component architectures are discussed: properties, events, methods, and persistence, and introspection. Concretely, the course studies JavaBeans as an example of a component architecture.
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. The programming projects will be conducted in the Java language.
- Other Information
- Grading will be based upon the following components: programming projects, quizzes, in-class exams, and the final exam.
- Syllabus
- Taught by Dr. Laufer.