Generic and Generative Software Design Sven Apel, Florian Sattler Advanced Course (6CP)

Registration for this course is open until Monday, 31.10.2022 23:59.


Currently, no news are available

Generic and Generative Software Design



General Information

The course treats Generic and Generative Software Design to build reusable software components utilizing meta-programming. During the course, students learn different techniques on how to design generic and reusable components. This includes functional abstractions to build generic higher-order functions, meta-programming techniques to improve API design and software performance as well as designing DSLs to simplify the usage of generic APIs. During the course, we focus on discussing and reasoning about design trade-offs in generic code, drawing ideas from different imperative and functional programming languages. Furthermore, the lecture explores how we can use generative domain models to generate customized program variants.



  • C++ Basics
  • Encoding configurability into types
  • Functional abstraction and higher-order functions
  • Type computations
  • Generic Programming
  • Type-APIs
  • Embedded DSL
  • Introduction to product-line engineering
  • Generating program variants with generative domain models


Lecture Dates

  • Place: Hybrid (Online via Zoom, Local at E1.3 003)
  • Time: Monday (12⁠–14 c.t.) and Wednesday (12⁠–14 c.t.) CEST
  • First Meeting: 26.10. (12–14 c.t.) CEST


Entrance Requirements

  • Knowledge of programming concepts (as taught in the lectures Programmierung 1 and Programmierung 2)
  • Basic knowledge of software processes, design, and testing (as taught and applied in the lecture Softwarepraktikum)
  • Basic knowledge of C++ is advisable (we provide a condensed but comprehensive introduction at the beginning)
  • Basic knowledge on Linux systems is recommended


Modus Operandi

Beside the lecture and weekly practical exercises, there will be three assignments in the form of mini-projects for each group (2 students) to work on. The assignments will be assessed based on the principles covered in the lecture. Students need to achieve at least 50% of the points of the assignments as well as the written exam to pass the course. The final grade is determined by the written exam (50%) and the three assignments (10%, 20%, 20%). Further examination details will be announced by the lecturer at the beginning of the course.

In short:

  • Passing the assignments (min. 50% of the points)

  • Passing the written exam (min. 50% of the points)


Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators