P2: Programming 2 — Object-Oriented Design


Vorlesung für Haupt- und Nebenfachstudenten.

Course:Programming 2 (Spring Semester 2018)
Lecturers: Dr. Andrei Chiș (for Prof. Oscar Nierstrasz)
Staff:Pooja Rani, Pascal André, Julius Oeftiger, Manuel Schüpbach, Marcel Zauder
Lectures: Fridays 14h15 - 16h00
Language: English
Location: Engehaldenstrasse 8, 001
Start: 2020-02-21
Exam: Wednesday, June 3, 2020 @ 10h15-12h00 in ExWi A6
Exercise hour:Fridays 16-17
Computer pool support:Tuesdays 16-18, in A95 (Exwi)
Repetition:Spring 2021


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 21-Feb-20 Introduction
2 28-Feb-20 OO Design Principles
3 06-Mar-20 Design by Contract
4 13-Mar-20 A Testing Framework
5 20-Mar-20 Debugging and Tools
6 27-Mar-20 Iterative Development
7 03-Apr-20 Inheritance and Refactoring
- 10-Apr-20 Good Friday
- 17-Apr-20 Spring break
8 24-Apr-20 GUI Construction
9 01-May-20 Guidelines, Idioms and Patterns
10 08-May-20 A bit of C++
11 15-May-20 Advanced Design Lab
12 22-May-20 A bit of Smalltalk
13 29-May-20 Software-Entwicklung in der Praxis (Stefan Reichhart, Zühlke)
03-Jun-20 Exam — ExWi A6 @ 10h00-12h00
Last changed by oscar on 25 May 2020