Hasso-Plattner-Institut25 Jahre HPI
Hasso-Plattner-Institut25 Jahre HPI

Fortgeschrittene Programmierwerkzeuge (Wintersemester 2022/2023)

Dozent: Prof. Dr. Robert Hirschfeld (Software-Architekturen) , Patrick Rein (Software-Architekturen) , Marcel Taeumel (Software-Architekturen)

Allgemeine Information

  • Semesterwochenstunden: 4
  • ECTS: 6
  • Benotet: Ja
  • Einschreibefrist: 01.10.2022 - 31.10.2022
  • Prüfungszeitpunkt §9 (4) BAMA-O: 16.12.2022
  • Lehrform: Projektseminar
  • Belegungsart: Wahlpflichtmodul
  • Lehrsprache: Deutsch
  • Maximale Teilnehmerzahl: 20

Studiengänge, Modulgruppen & Module

IT-Systems Engineering MA
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-K Konzepte und Methoden
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-S Spezialisierung
  • OSIS: Operating Systems & Information Systems Technology
    • HPI-OSIS-T Techniken und Werkzeuge
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-K Konzepte und Methoden
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-S Spezialisierung
  • SAMT: Software Architecture & Modeling Technology
    • HPI-SAMT-T Techniken und Werkzeuge
Data Engineering MA


In this seminar, we will jointly develop an overview of advanced programming tools, so that the next time a suitable situation arises, you know the right tool for the job.

As programmers, we only use a fraction of the tools available to us. Instead of using the right tools, we often use the tools we know, even when they are utterly unsuitable. At the same time there is a variety of advanced programming tools that directly solve challenges from common ones to exceptional ones, be it stepping to the right point in time to find a defect in a web application, ensuring that we covered all cases in a complex conditional expression on train configurations, or getting a better overview when skimming source code of a legacy middleware. As part of the overview we develop in this seminar, we will cover advanced programming tools and techniques for all activities of programming and dealing with dynamic as well as static information. We will cover established tools as well as tools that are still only available as research prototypes.

Knowing Your Programming Tools Makes You Better At Programming

Programming tools bring the complexity of most software development to a human scale. Except for simple programs, many aspects of software behavior can not be perceived on a human scale. CPUs execute behavior too fast for humans to observe it, systems have so many potential run-time states that understanding and reasoning about them is almost impossible when done in a naive way, and even the source code of many systems is too large for humans to know its structure by heart. Programming tools can bring software behavior to a scale that we can handle. In this regard, basic programming tools already go a long way. For instance, senders/implementers navigation makes exploring a code base much easier and debuggers not only make behavior visible but also allow us to execute the program at the speed that is comfortable for us.

Nevertheless, while basic programming tools bring system behavior to a human scale, they are often not designed to support us with the specific task at hand. For example, a step-wise debugger allows us to see the behavior of a program step-by-step, but beyond that, it does not support us in finding defects. In contrast, back-in-time debuggers support us in reasoning backwards from an infection to a defect by providing a "step back" feature. Similarly, with tracing, we can get an impression of how our application instantiates objects, but only a memory debugger directly supports us when working on memory leaks due to stale subgraphs in object-oriented systems. Knowing when and how to use these powerful tools can make you more effective at creating systems.


We will provide literature individually, depending on the topic you selected.

Lern- und Lehrformen

During the seminar you will prepare and give a presentation that introduces and discusses one advanced programming tool to the seminar group. As starting points, we provide pointers to literature. To support you in working on the topic, there will be two scheduled consultations before your presentation: one to resolve any problems you encountered and one to revise your presentation. You will also prepare a short written report on your findings, that parallels the content of your presentation.


Your grade is generally derived from the depth and comprehensiveness of your understanding of your assigned tool. In detail, 70% of the grade are derived from your presentation and 30% are derived from your written report. In general, presentation and report have the same content.


The first session will be on the 18th of October at 9:15 in A-2.1. We will introduce the seminar and the list of topics. As a fallback for everyone who may not be able to attend in person, we will stream sessions. There is no event in the slot on Thursday 20th of October.