Course (BSc): Programming 2
Page content
Description
This course provides an introduction to object-oriented design in Java with an emphasis on practical techniques for developing complex software systems.
Overview
- Lecturer: Timo Kehrer
- Assistants: Pooja Rani, Marcel Zauder, Lorenzo Wipfli, Marco Di Liso, Blendi Shala
- Course details: ILIAS
- Registration: KSL
- Lectures: Fridays 13:15 - 15:00 (Hörsaal 004, Hörsaalgebäude vonRoll)
- Exercise hour: Fridays 15:00 - 16:00 (Hörsaal 004, Hörsaalgebäude vonRoll)
- Pool hours: Tuesday 16:00 - 18:00 (Discord)
- Language: English, German
- Start: Friday, February 25, 2022
- Exam: Wednesday, June 8, 2022, 10:15 - 12:00 (Details will follow)
- Repetition: Spring 2023
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 as reusable solutions to commonly occurring design problems
- How to develop software that communicates its own design
- How to effectively use development tools like integrated development environments and version control systems
Schedule
- 25-Feb-22: Introduction
- 04-Mar-22: Design Principles
- 11-Mar-22: Design by Contract
- 18-Mar-22: Testing and Debugging
- 25-Mar-22: Q&A
- 01-Apr-22: Inheritance
- 08-Apr-22: Iterative Development and Refactoring
- 15-Apr-22: Good Friday
- 22-Apr-22: Spring break
- 29-Apr-22: GUI Construction
- 06-May-22: Advanced Design Lab
- 13-May-22: Software Development in Practice (Guest Lecture)
- 20-May-22: A bit of Smalltalk (Oscar Nierstrasz)
- 27-May-22: Design Patterns
- 03-Jun-22: Q&A