https://dirkriehle.com/open-courses/advanced-design-and-programming/
This course teaches principles and practices of advanced object-oriented design and programming.
It 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:
- Method design
- Class design
- Classes and interfaces
- Subtyping and inheritance
- Implementing inheritance
- Design by contract
- Values vs. objects
- Role objects
- Type objects
- Object creation
- Collaboration-based design
- Design patterns
- 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.
Watch the videos on my YT channel at https://www.youtube.com/dirkriehle