Systems Programming
Lecturer: Prof. Dr. Michael Engel
Description
Runtime-efficient software execution remains relevant even for computer systems with high processor performance and large amounts of main memory, as software requirements continue to grow. At the same time, the importance of other, so-called non-functional code properties—such as secure, reliable, and energy-efficient execution—continues to increase.
This module examines these aspects from the perspective of compiling programs written in a high-level language. Unlike typical courses on compilers, the focus here is not on the process of syntactic and semantic analysis, but rather on the so-called backend of compilers—that is, the components responsible for generating and optimizing machine-readable code.
Particular emphasis is placed on the analysis and optimization of non-functional properties in a compiler’s backend. As part of the practical exercises for this module, students are therefore expected to independently develop a compiler for a simple, specified high-level language in defined steps. This development specifically involves implementing a particular feature of code generation or optimization, which each student will present in a talk at a colloquium at the end of the semester.
The course is offered in an inverted classroom format. Students are expected to watch the lecture videos made available each week well in advance of the in-person programming and discussion sessions and to complete the corresponding preparatory work. The in-person sessions consist of a combination of live programming, independent work on sub-tasks, and discussion of any problems that arise. Regular attendance at the in-person sessions, successful independent completion of the respective subtasks, and the final presentation are prerequisites for passing the portfolio exam.
The use of code-generation systems such as large language models and agents in this course is strictly prohibited and will result in exclusion from the course.
