P2: Programming 2 — Object-Oriented Design
Overview
Vorlesung für Haupt- und Nebenfachstudenten.
NB: The current version of this course (FS2022) is hosted on the SEG web site.
| Course: | Programming 2 (Spring Semester 2021) | 
| 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 | 
Description
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 | 
