P2: Programming 2


Vorlesung für Haupt- und Nebenfachstudenten.

Course:Programming 2 (Spring Semester 2017)
Lecturers: Prof. Oscar Nierstrasz
Staff:Claudio Corrodi, Mathias Stocker, Silas Berger, tbd
Lectures: Fridays 14h15 - 16h00
Language: English (German on demand)
Location: Engehaldenstrasse 8, 001
Start: 2017-02-24
Exam: 2017-06-08 @ 11h15-13h00 in ExWi A6
Exercise hour:Fridays 16-17
Computer pool support:Tuesdays 16-18, in A95 (Exwi)
Repetition:Spring 2018


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 2017

Week Date Lecture
1 24-Feb-17 Introduction
2 03-Mar-17 OO Design Principles
3 10-Mar-17 Design by Contract
4 17-Mar-17 A Testing Framework
5 24-Mar-17 Debugging and Tools
6 31-Mar-17 Iterative Development
7 07-Apr-17 Inheritance and Refactoring
- 14-Apr-17 Good Friday
- 21-Apr-17 Spring break
8 28-Apr-17 GUI Construction
9 05-May-17 Advanced Design Lab (Andrei Chiș)
10 12-May-17 Guidelines, Idioms and Patterns (Andrei Chiș)
11 19-May-17 A bit of C++
12 26-May-17 A bit of Smalltalk
13 02-Jun-17 Einblicke in die Praxis (Stefan Reichhart)
08-Jun-16 Exam — ExWi A6 @ 10h00-12h00
Last changed by cc on 12 December 2017