Software Engineering Prof. Dr. Sven Apel Core Lecture — Winter Semester 2021


Currently, no news are available

Software Engineering Wintersemester 2021/22


About the Lecture

The lecture Software Engineering covers a broad range of topics in software engineering with a special focus on software variability, configuration, generation, and optimization. It builds on basic programming and software engineering concepts, as taught in the lectures Programming 1 & 2 and Softwarepraktikum. Topics that are covered include:

  • Domain analysis, feature modelling
  • Automated reasoning about software configuration using SAT solvers
  • Runtime parameters, design patterns, frameworks
  • Version control, build systems, preprocessors
  • Collaboration-based design
  • Aspects, pointcuts, advice
  • Expression problem, preplanning problem, code scattering & tangling, tyranny of the dominant decomposition, inheritance vs. delegation vs. mixin composition
  • Feature interaction problem (structural, control- & data-flow, behavioural, non-functional feature interactions)
  • Variability-aware analysis and variational program representation (with applications to type checking and static program analysis)
  • Sampling (random, coverage)
  • Machine learning for software performance prediction and optimization


Lecture Format

The lecture will be held online (Zoom link cf. Timetable). For the tutorials, we are currently planning a hybrid format (in person + online). More information will be announced in the first lecture. Lecture and tutorial dates can be found in the course's timetable.



To get access to exercise sheets and other course material you need to register via this CMS course. Registration opens on 04.10.2021 and ends on 22.10.2021.



  • Knowledge of programming concepts (as taught in the lectures Programming 1 and Programming 2)

  • Basic knowledge of software processes, design, and testing (as taught and applied in the lecture Softwarepraktikum)


Assignments / Exam

Beside the lecture and weekly practical exercises, there will be a number of assignments in the form of mini-projects for each student to work on (every two to three weeks). The assignments will be assessed based on the principles covered in the lecture. Passing all assignments is a prerequisite for taking the final written exam. The written exam will be graded. Further examination details will be announced by the lecturer at the beginning of the course.

In short:

  • Passing the assignments (prerequisite for the written exam)

  • Passing the written exam



  • Feature-Oriented Software Product Lines: Concepts and Implementation. S. Apel, et al., Springer, 2013.

  • Generative Programming: Methods, Tools, and Applications: Methods, Techniques and Applications. K. Czarnecki, et al., Addison-Wesley, 2000.

  • Mastering Software Variability with FeatureIDE. J. Meinicke, et al., Springer, 2017.

  • Types and Programming Languages. Benjamin C. Pierce, The MIT Press, 2002.

  • Programmierung - eine Einführung in die Informatik mit Standard ML. Gert Smolka, Oldenbourg Verlag, 2011.

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