P2: Programming 2 — Object-Oriented Design


Vorlesung für Haupt- und Nebenfachstudenten.

Course:Programming 2 (Spring Semester 2018)
Lecturers: Prof. Oscar Nierstrasz
Staff:Pooja Rani, Pascal André, Julius Oeftiger, Lorenzo Wipfli, Marcel Zauder
Lectures: Fridays 14h15 - 16h00
Language: English
Location: Engehaldenstrasse 8, 001
Start: 2021-02-26
Exam: Wednesday, June 9, 2021 @ 10h15-12h00 (Details to follow)
Exercise hour:Fridays 16-17
Computer pool support:Tuesdays 16-18
Repetition:Spring 2022


NB: Due to Covid-19, this class will largely be held remotely. Please sign up in ILIAS as soon as possible so that we can inform you about how to participate in the lectures. In case of any encounters in person, please be sure to bring a mask, as there may not be enough room to maintain social distancing.


mvc.png This course provides an introduction to object-oriented design in Java with an emphasis on practical techniques for developing complex software systems.

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 to simplify your software
  • how to develop software that communicates its own design
  • how to effectively use development tools like debuggers, version control systems, and integrated development environments?

Schedule (tentative)

Week Date Lecture
1 26-Feb-21 Introduction
2 05-Mar-21 OO Design Principles
3 12-Mar-21 Design by Contract
4 19-Mar-21 A Testing Framework
5 26-Mar-21 Debugging and Tools
- 02-Apr-21 Good Friday
- 09-Apr-21 Spring break
6 16-Apr-21 Iterative Development
7 23-Apr-21 Inheritance and Refactoring
8 30-Apr-21 GUI Construction
9 07-May-21 Advanced Design Lab
10 14-May-21 Guidelines, Idioms and Patterns
11 21-May-21 A bit of Smalltalk
12 28-May-21 A bit of C++
13 04-Jun-21 Software-Entwicklung in der Praxis (Lukas Akermann, Zühlke)
09-Jun-21 Exam @ 10h00-12h00 — Details to follow
Last changed by scg on 28 May 2021