Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

Advanced Design and Programming (ADAP)

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

Overview: https://dirkriehle.com/open-courses/advanced-design-and-programming/

Youtube: https://www.youtube.com/playlist?list=PLQ2ODVSeOYlWOGwLHe5kdvbVZtCxy_1xD

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 https://github.com/dirkriehle/wahlzeit .

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.