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 2023)
- Lecturer: Timo Kehrer
- Assistants: Pablo Valenzuela, Yael van Dok, Filip Nikolic, Marlene Kulowatz
- Course details: ILIAS
- Registration: KSL
- Lectures: Fridays 13:15 - 15:00 (Hörsaal 1 001, Engehalde, E8)
- Exercise hour: Fridays 15:00 - 16:00 (Hörsaal 1 001, Engehalde, E8)
- Stream/Podcast: Available through ILIAS course
- Pool hours: Tuesdays 16:30 - 18:00 (ExWi Linux Pool, A95)
- Language: English, German
- Start: Friday, February 24, 2023
- Exam: Written exam, June 12, 2023, 10:15 -12:00 (Hörsaal A006, Exakte Wissenschaften, ExWi)
- Repetition: Spring 2024
Schedule (Spring Semester 2023)
- 24-Feb-23: Introduction
- 03-Mar-23: Object-Oriented Design Principles
- 10-Mar-23: Design by Contract
- 17-Mar-23: Testing and Debugging
- 24-Mar-23: Inheritance and Polymorphism
- 31-Mar-23: Iterative Development and Refactoring
- 07-Apr-23: Good Friday
- 14-Apr-23: Spring break
- 21-Apr-23: Design Patterns
- 28-Apr-23: GUI Construction
- 05-May-23: Functional Programming
- 12-May-23: Live Programming in Smalltalk (Guest Lecture by Oscar Nierstrasz)
- 19-May-23: Aspect-Oriented Programming
- 26-May-23: Advanced Design Lab
- 02-Jun-23: Q&A