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.
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
- How to program declaratively using paradigms beyond (classical) object-orientation
Overview (Spring Semester 2024)
- Lecturer: Timo Kehrer
- Exercises: Roman Bögli
- Assistants: Maurice Amon, Marlene Kulowatz, Ramon Näf, Vsevolod Yevdokimov
- Course materials: ILIAS
- Registration: KSL
- Lectures: Fridays 13:15 - 15:00 (Hörsaal 1 001, Engehalde, E8)
- Exercise hour: Fridays 15:15 - 16:00 (Hörsaal 1 001, Engehalde, E8)
- Stream/Podcast: Available through ILIAS course
- Pool hours: Tuesdays 16:30 - 18:00 (PC Pool A95, ExWi)
- Language: English, German
- Start: Friday, 23rd February 2024
- Exam: Monday, 10th June 2024, 10:00 - 12:00 (Hörsaal A6 und B5, ExWi)
- Repetition Exam: Thursday, 26th September 2024, 16:30 - 18:30 (Hörsaal 002, Engehalde, E8)
- Course Repetition: Spring Semester 2025
Schedule (Spring Semester 2024)
- 23-Feb-24: Introduction
- 01-Mar-24: Object-Oriented Design Principles
- 08-Mar-24: Design by Contract
- 15-Mar-24: Testing and Debugging
- 22-Mar-24: Inheritance and Polymorphism
- 29-Mar-24: No class (Good Friday)
- 05-Apr-24: No class (Spring break)
- 12-Apr-24: Iterative Development and Refactoring
- 19-Apr-24: Design Patterns
- 26-Apr-24: GUI Construction
- 03-May-24: GenAI/Code Generation für Developer – was können die Tools, wie geht’s, wo macht es Sinn? (Isabell Sippli, IBM AIOps)
- 10-May-24: Live Programming in Smalltalk (Guest Lecture by Oscar Nierstrasz)
- 17-May-24: A Bit of Functional Programming
- 24-May-24: Introduction to Aspect-Oriented Programming
- 31-May-24: Q&A