Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Advanced Design and Programming (ADAP)

This course teaches principles and practices of advanced object-oriented design and programming.



The course consists of a weekly lecture with exercises, homework and self-study, totaling 4 SWS, 5 ECTS. This is a hands-on course and students should be familiar with their Java IDE.

Students learn the following concepts:

Class-level concepts

  • Method design
  • Class design
  • Classes and interfaces
  • Subtyping and inheritance
  • Implementing inheritance
  • Design by contract

Collaboration-level concepts

  • Values vs. objects
  • Role objects
  • Type objects
  • Object creation
  • Collaboration-based design
  • Design patterns

Component-level concepts

  • Error and exception handling
  • Meta-object protocols
  • Frameworks and components
  • Domain-driven design
  • API evolution

The running example is the photo sharing and rating software Wahlzeit, see .

Class is held as a three hour session with a short break in between. The class iterates over short lectures, discussion, and exercise chunks of 10-30min each. Students should bring a laptop with a well-working Java programming setup.