Course (BSc): Programming 2

Page content


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

Overview (Spring Semester 2022)

  • 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

Schedule (Spring Semester 2022)

  • 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