| Office hours
The goal of the course is to let students develop the ability to “think with objects” when designing and building a complex software system. The course provides an academic basis for object-oriented design and programming.
At the end of this course, the student is expected to be able to:
- design object-oriented models for concrete scenarios;
- devise a class hierarchy based on the model;
- describe and document the planned class hierarchy using standard formats like UML;
- identify and apply common object-oriented design patterns.
- implement the planned class hierarchy in the concrete programming language used;
- plan and execute systematic testing of the class hierarchy and and object-oriented program (unit, component, integration).
- Object-oriented design, architectures, and principles.
- Abstraction, encapsulation, inheritance, and polymorphism.
- The basics of UML class and sequence diagrams.
- Common design patterns such as factory, singleton, composite, decorator, observer, strategy, command, visitor.