Research and teaching mutually benefit from each other. Through research, we find new concepts, theories, and methods that we then teach to future researchers and practitioners. Through teaching, we organize, reflect, and possibly scrutinize these results.


Informatik im Maschinenbau 1

The goal of the lecture is to teach the basics of object-oriented programming with Java, distributed systems, techniques of software engineering, and applications of artificial intelligence to Bachelor level students in mechanical engineering.

Model-Based Software Engineering

The lecture teaches the model-based development of complex software systems. It covers the use of models in software development processes, the simulation and generation of code and test cases from models, the analysis of models, and the evolution of models by refactoring. The modeling languages UML, SysML, and MontiArc are focused on in this lecture.

Software Language Engineering

“The limits of my language are the limits of my world.” (Ludwig Wittgenstein) – This is all the more true when humans communicate with computers. The lecture teaches the concepts of language definition, such as metamodels, grammars, modern editors, and the use of software languages, for example, to model software, systems, simulations. Examples such as UML, domain-specific languages (DSL), XML are discussed, and semantic analysis and generation techniques are cover


The lecture teaches the basics of the development of complex software systems. It covers process models, the elicitation of requirements, software architecture and design, modeling, implementation, and quality assurance with tests.

Generative Software Engineering

After completing this course, the students will have a deeper understanding of the use of generative techniques for the development of software systems. They will be able to develop generators for UML or other DSLs and different target platforms. Furthermore, they will be able to judge the quality of systems and generators.

Project Classes

Videos of project class results are available from my youtube channel.

Model-Driven Engineering for Industry 4.0

In this lab course, students develop a small-scale demonstrator of a typical Industry 4.0 application. This involves building up the factory using Lego NXT and Fischertechnik, and developing models in the architecture description language MontiArc that are deployed to the factory through code generators. By the end of the semester, the students have built a smart factory demonstrator and implemented models to describe a variable, dynamic production system, which are deployed to Lego NXT and Fischertechnik.

Architecture Modeling Languages for Robotics

In this lab course, students develop architecture description languages (ADLs) for modeling platform-independent robotics architectures that can automatically be translated into platform-specific code using model transformations. To this end, the students learn about software architecture concepts, ADLs, and different technological spaces to implement these in. By the end of the semester, students will evaluate their ADLs by implementing models for selected robotic platforms.


Model-based Development of Robotics Applications

This lab course focuses on the development of a service robotics assistance system to solve logistics and guide&follow tasks. In this lab, students use the MontiArcAutomaton modeling language on Robotino3 robots operated by the Robot Operating System (ROS) in its Python implementation.


A Journey into Software Language Workbenches

In this seminar, students will systematically investigate the expressiveness and tool support of state-of-the-art language workbenches (such as Xtext, MPS, or Rascal). The intended result is a shared understanding of the capabilities of modern language workbenches.

Model-based Software Development

In this seminar, different topics of model-based software development are investigated considered, including model-based refactoring, model-based testing, code generation.