Courses offered in WS 2025/2026
[Lecture] Performance Engineering
Dr.-Ing. Achim Basermann, Institute for Software Technology German Aerospace Center (DLR)
The development of efficient software is relevant in almost all scientific, industrial, and social fields today.
Examples include aircraft and automobile design, weather forecasting, crisis management, and analysis of satellite or market data. Software is efficient when it makes the best possible use of today's computer resources, which are usually parallel.
To develop efficient software code, a fundamental understanding of possible hardware performance bottlenecks and relevant software optimization techniques is required.
Code transformations enable the optimized use of computing resources.
This lecture covers a structured approach to software optimization using a model-based performance engineering approach. This approach enables incremental software optimization by taking software and hardware aspects into account.
Even simple performance models such as the Roofline model allow accurate runtime predictions and deep insights into optimized hardware usage.
After a brief introduction to parallel processor architectures and massively parallel computing on distributed memory systems, this lecture covers model-based performance engineering for simple numerical operations such as sparse matrix-vector multiplication.
For massively parallel computers with distributed memory, communication-hiding and communication-avoiding methods are presented. Finally, the importance of performance engineering for parallel software tools, e.g., from rocket engine or aircraft design and from analyses of Earth observation or space debris data, is discussed.
In the exercise, model-based performance engineering techniques are demonstrated using simple benchmark codes.
[Lecture] Software Engineering
Acting Prof. Dr. Mersedeh Sadeghi, Institute of Computer Science
Developing good, successful software requires more than just programming skills. Software engineering deals with the systematic use of principles, methods, and tools for the collaborative, engineering-based development and application of large-scale software systems. This includes topics such as:
- Requirements
- Software design and software architecture
- Programming techniques and guidelines
- Maintenance and evolution
- Quality assurance
- Testing
- Development processes
[Lecture] Softwarequality
Prof. Dr. Michael Felderer, Institute for Software Technology German Aerospace Center (DLR)
Quality is a decisive success factor for the development and operation of software systems and requires the application of appropriate quality assurance techniques to ensure it. This lecture provides an overview of software quality characteristics, constructive and analytical quality assurance techniques, and their application in specific areas of use.
Topics covered in the course include modern software development processes, software quality attributes such as reliability, usability, security, and maintainability and their measurement, software testing methods, software analysis, and quality assurance in specific application areas such as intelligent, distributed, or safety-critical systems.
[Lecture] Heterogeneous and parallel computing
Prof. Dr. Stefan Wesner with Dr. Lutz Schubert and Robert Keßler, Institute of Computer Science
The course will start from an overview over current processor systems and development trends in computer hardware towards increased heterogeneity and specialisation, driven by the need for more computer performance and increased energy efficiency. The first section of the course will provide a base knowledge of processor architecture from a performance perspective. In a second section, the principles of parallelisation will be elaborated on all levels, from large scale computing systems, such as high performance computing and clouds, down to multi- and many-core processors. This covers the principles of parallel programming and programming models, such as OpenMP, MPI and Partitioned Global Address Space (PGAS). This will also cover their limitations, such as Amdahl's law and the impact of data locality. The third section will address specialisation of systems, ranging from embedded devices and multi-core systems to specialised co-processors, such as GPUs. The impact of specialisation on performance and energy efficiency, but also on programmability and portability will be elaborated. The future trends towards completely heterogeneous setups on all levels will be examined and assessed. The lecture will conclude with an outlook on how processors will likely develop in the future and what this means for the programmability and portability of software.
[Seminar] High-Performance Computing with GPUs
Prof. Dr. Stefan Wesner with Dr. Andreas Herten and Robert Keßler, Institute of Computer Science
GPUs are ubiquitous in High-Performance Computing, delivering the majority of performance in the fastest supercomputers around the world. The platform is enabled by highly parallel applications, suitable programming models, and a close combination between software and hardware, and advanced hardware designs. The seminar covers topics relevant to all components of the HPC GPU ecosystem, like effective implementation of GPU algorithms, investigations to programming models, performance analysis, benchmarking of applications, and understanding hardware features.
[Seminar] Programming Principles of Distributed Systems
Prof. Dr. Stefan Wesner with Dr. Lutz Schubert and Robert Keßler, Institute of Computer Science
This seminar covers emerging topics in parallel and distributed computing. The scope spans from tightly coupled high performance computing systems to loosely coupled cloud and edge computing systems. Special emphasis is placed on advanced system architectures with heterogeneous processor and memory technologies.
During the seminar, students will work together in a small group to reproduce the results of a previously published research paper from the above mentioned scientific domain. Relevant publications must have been peer-reviewed by a major conference or in a journal and feature an open source codebase (see the literature below for examples of representative papers). To build/run and produce the results of the paper, both local and remote resources can be used, which are provided by the seminar lecturer as needed. Optionally the students are even capable to improve or optimize the proposed solution in the chosen paper. We are planning to send students who have demonstrated outstanding quality and dedication to a European Reproducibility Challenge if sufficient interest is expressed.
[Seminar] Development with Game Engines
Prof. Dr. Stefan Wesner and Paul Benölken, Institute of Computer Science
Trade fairs such as Cologne's GamesCom impressively demonstrate, with their visitor numbers, the unbroken fascination that computer games (video games) continue to exert. Having now outgrown their infancy, games are increasingly finding their way into professional environments beyond the entertainment industry under the heading of serious games.
The fields of application now range from education and training to cultural heritage, medicine, architecture, and the automotive and aviation sectors. As with modeling and animation, professional tools such as game engines are now used for the development of new games. Based on a specific application, the aim is to develop a game engine for the development of a new game.
As with modeling and animation, professional tools such as game engines are now also used for the development of new games. Using a specific application, the possibilities of a game engine will be explored and utilized using the example of the Unreal Engine.
To this end, participants will develop a joint project in groups, with each group responsible for a specific task. The seminar is suitable for students from the 4th semester onwards. Basic knowledge of computer graphics and knowledge of an object-oriented programming language (C++ or Java) are advantageous. For capacity reasons, the number of participants is limited to 12.