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 |
