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 2025)

  • Lecturer: Timo Kehrer
  • Exercises: Roman Bögli
  • Assistants: ILIAS
  • Course materials: TBA
  • 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: TBA
  • Language: English, German
  • Start: Friday, 21st February 2025
  • Exam: TBA
  • Repetition Exam: TBA
  • Course Repetition: Spring Semester 2026

Schedule (Spring Semester 2025)

  • 21-Feb-25: Introduction
  • 28-Feb-25: Object-Oriented Design Principles
  • 07-Mar-25: Design by Contract
  • 14-Mar-25: Testing and Debugging
  • 21-Mar-25: Inheritance and Polymorphism
  • 28-Mar-25: Iterative Development and Refactoring
  • 04-Apr-25: Design Patterns
  • 11-Apr-25: GUI Construction
  • 18-Apr-25: (No class)
  • 25-Apr-25: (No class)
  • 02-May-25: A Bit of Functional Programming
  • 09-May-25: Introduction to Aspect-Oriented Programming
  • 16-May-25: Guest Lecture (TBA)
  • 23-May-25: Guest Lecture (TBA)
  • 30-May-25: Q&A