a few more brief details. The first lecture will take place on Tuesday 13th of April. We will record this and all subsequent lectures and make them available to you. This way, you will be able to watch them again if there is a clash of... Read more
a few more brief details. The first lecture will take place on Tuesday 13th of April. We will record this and all subsequent lectures and make them available to you. This way, you will be able to watch them again if there is a clash of dates.
Note that to participate in this course you must register by midnight on 18th of April.
We've uploaded the first two sets of slides under materials. You find the link for the Zoom-meeting in the Introduction slides.
All the best,
Generic and Generative Software Design
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
- Embedded DSL
- Introduction to product-line engineering
- Generating program variants with generative domain models
- Place: Online (via Zoom)
- Time: Tuesday (10–12 c.t.) and Wednesday (12–14 c.t.) CEST
- First Meeting: Tuesday 13.04.2021 (10–12 c.t.) CEST
- 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++ on Linux systems is recommended
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.
Passing the assignments (min. 50% of the points)
Passing the written exam (min. 50% of the points)