About this course
This course provides an introduction to object-oriented design in Java with an emphasis on practical techniques for developing complex software systems.
Organisation
- Lecturer:
- Instructor (Exercises):
- Teaching assistants:
- Material:
- Podcast:
- Registration:
- Language: English, German
- Course repetition: Spring Semester 2027
Prerequisites
You should have successfully completed the Programmming 1 course.
Learning outcomes
You will learn:
- How to apply Responsibility-Driven Design to decompose a complex system into objects
- How to use Design by Contract to develop robust software
- How to make use of inheritance to design flexible and generic software systems
- How to apply iterative and incremental development and continuous refactoring to arrive at a clean and understandable design
- How to effectively test software
- How to develop maintainable code by consistently applying simple design principles
- How to apply design patterns as reusable solutions to commonly occurring design problems
- How to develop software that communicates its own design
- How to effectively use development tools like integrated development environments and version control systems
- How to program declaratively using paradigms beyond (classical) object-orientation
Schedule
- Lectures: Fridays 13:15 - 15:00,
- Exercises: Fridays 15:15 - 16:00,
- Pool Hours: Tuesdays 16:30 - 18:00,
Exam
- Date: Friday, 12 June 2026, 10:00 – 12:00
- Location:
- Type: Written, closed-book, 105 minutes
- Registration: