Programming 2
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: Timo Kehrer
- Instructor (Exercises): Roman Bögli
- Teaching assistants: Teaching assistants
- Material: ILIAS
- Podcast: ILIAS
- Registration: KSL
- 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, Hörsaal 1 001, Engehalde, E8
- Exercises: Fridays 15:15 - 16:00, Hörsaal 1 001, Engehalde, E8
- Pool Hours: Tuesdays 16:30 - 18:00, PC Pool A95, ExWi
| Date | Lecture Topic | Exercise Topic |
|---|---|---|
| 20-02-26 | Introduction | ex01-git |
| 27-02-26 | Object-Oriented Design Principles | ex02-glob-patterns |
| 06-03-26 | Design by Contract | ex03-turtle-car |
| 13-03-26 | Testing and Debugging | ex04-snake-ladders |
| 20-03-26 | Inheritance and Polymorphism | ex05-ludo-s1 |
| 27-03-26 | Iterative Development and Refactoring | ex06-ludo-s2 |
| 03-04-26 | – No class – | |
| 10-04-26 | – No class – | |
| 17-04-26 | Design Patterns | ex07-design-patterns |
| 24-04-26 | GUI Construction | ex08-ludo-s3 |
| 01-05-26 | A bit of Smalltalk (Guest Lecture by Oscar Nierstrasz) | (additional time for ex08-ludo-s3) |
| 08-05-26 | Functional Programming | ex09-functional-programming |
| 15-05-26 | Aspect-Oriented Programming | ex10-aspects |
| 22-05-26 | (Guest Lecture) | (Exam Briefing) |
| 29-05-26 | Q&A |
Exam
- Date: Friday, 12 June 2026, 10:00 - 12:00
- Location: Hörsaal A6 and B5, ExWi
- Type: Written, closed-book, 105 minutes
- Registration: KSL
Repetition exam
- Date: TBA
- Location: TBA
- Type: TBA
- Registration: TBA