Compiler Construction

Programs that run on a computer are written in a computer language, and the languages used for writing computer programs have significantly evolved over time. By abstracting from the details of the underlying computer architecture, higher-level languages aim at making the process of developing a program simpler and more understandable than when using a lower-level language. Modern languages offer us a variety of different concepts for expressing (executable) programs. Domain-specific (modeling) languages are even created specifically to solve problems in a particular domain of interest. However, programs written in a higher-level language must be translated into a lower-level, executable representation, which requires various forms of compilers doing this job for us.


Code 11114
Type Course
Site Bern
Track(s) T1 – Distributed Software Systems
Semester S2024


Learning Outcomes

This course will provide students with an introduction to modern compiler construction. The first two-thirds of the course will cover classical topics ranging from scanning and parsing over semantic analysis and interpretation to code generation and optimization. In the exercises, we will develop a fully functional interpreter for our own programming language. The remaining third of the course is dedicated to study the transition form classical compiler techniques into principles of model-driven software development. In the exercises, we will develop a fully functional, domain-specific modeling environment.

Here are just a couple of reasons of why it is worth to take that course:

The magic of computer languages:

  • Ever wanted to make your own programming language or wondered how they are designed and built?
  • If so, this is already enough. But there are also very practical reasons:

Little languages are everywhere:

  • Even if you will most likely not be faced with the task of implementing a fully-fledged compiler in your professional life, there is a good chance you will find yourself in need of writing a parser in order to process various documents written in tiny little languages.

Domain-specific Languages and Model-driven Development:

  • There has been a hype on DSLs and Model-driven development in the past, and larger software development projects in various domains successfully adopted these paradigms.
  • Building sophisticated model-driven software engineering environments is the backbone of running these projects.
Lecturer(s) Timo Kehrer
Language english
Course Page

The course page in ILIAS can be found at

Schedules and Rooms

Period Weekly
Schedule Tuesday, 10:15 - 13:00
Location UniBE, Hauptgebäude H4
Room 101

Additional information


First Lecture
The first lecture will take place on Tuesday, 20.02.2024 at 10:15 in UniBE, Hauptgebäude H4, room 101.

Room Change
The lecture on Tuesday, 19.03.2024 will exceptionally be held in UniBE, Hauptgebäude H4, room 220.