<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<document>
<title>Compiler Construction</title>
<cid>KIB-CBAU</cid>
<sapsubmodule>P221-0067</sapsubmodule>
<bkey>ki2</bkey>
<ctypes>
<hours>2</hours>
<type>V</type>
<hours>2</hours>
<type>P</type>
</ctypes>
<cp>5</cp>
<semester>5</semester>
<mandatory>no</mandatory>
<language>German</language>
<exam>Oral examination, project, presentation</exam>
<curriculum>
<curriculum_entry>
<cid>KI675</cid>
<branch>Computer Science and Communication Systems</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>KIB-CBAU</cid>
<branch>Computer Science and Communication Systems</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>KIB-CBAU</cid>
<branch>Computer Science and Communication Systems</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PIBWI55</cid>
<branch>Applied Informatics</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PIB-CBAU</cid>
<branch>Applied Informatics</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PIB-CBAU</cid>
<branch>Applied Informatics</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>TIB-CBAU</cid>
<branch>Technical Computer Science</branch>
<semester>5</semester>
<mandatory_tag>optional course</mandatory_tag>
</curriculum_entry>
</curriculum>
<workload>
60 class hours (= 45 clock hours) over a 15-week period.The total student study time is 150 hours (equivalent to 5 ECTS credits).There are therefore 105 hours available for class preparation and follow-up work and exam preparation.</workload>
<prerequisites>
</prerequisites>
<knowledge>[?]</knowledge>
<prerequisitesfor>
</prerequisitesfor>
<convenor>Prof. Dr. Markus Esch</convenor>
<convenor-person-key>mes</convenor-person-key>
<lecturers>
<lecturer>Prof. Dr. Markus Esch</lecturer>
<lecturer-person-key>mes</lecturer-person-key>
</lecturers>
<objectives>Learning outcomes:
Importing and, if necessary, translating custom file formats are basic tasks that computer scientists and programmers are regularly confronted with.
Based on the typical structure of a compiler, students will learn about the individual steps of importing, analyzing and translating a (formal) language (source language) into another (formal) language (target language), understand those steps and be able to apply them in their own project.

After successfully completing this module, students will: be familiar with the the individual modules of a compiler/translator.
- understand how lexers and parsers work and can be automatically generated from specifications,
- understand how the steps in generating code map high-level language to assembly language using C-to-CMa as an example, 
- be familiar with the most important program analyses and optimizations that compilers usually perform (available expressions, interval analysis, constant propagation, dead variables, etc.).

In their project, students will develop their own compiler for a programming language they designed themselves.</objectives>
<content>1. Introduction (high-level programming languages, implementation of programming languages)
2. Lexing
3. Parsing
4. Generating code
5. Code optimization
6. Project work</content>
<literature>A. AHO, R. SETHI, J. ULLMAN: Compilers
R. WILHELM, D. Maurer: Übersetzerbau: Theorie, Konstruktion, Generierung
R. WILHELM, H. SEIDL: Übersetzerbau. Virtuelle Maschinen
H. SEIDL, R. WILHELM, S. HACK: Compiler Design: Syntactic and Semantic Analysis
H. SEIDL, R. WILHELM, S. HACK: Übersetzerbau. Analyse und Transformation</literature>
<offered>
</offered>
<moduldb-query>Mon Aug 10 01:06:01 CEST 2026, CKEY=cbau, BKEY=ki2, CID=[?], LANGUAGE=en, DATE=10.08.2026</moduldb-query>
</document>
