This course consists of both lectures and exercises, teaching the following topics: - Object-oriented programming concepts - Types and subtypes - From design to programming - Patterns in object-oriented programming - Testing (of object-oriented programs)