Compiler Construction

Core Course

People

Reinhard Wilhelm, Sebastian Hack, Daniel Grund, Michael Jacobs

General Information

The course treats compiler construction for imperative programming languages. This includes lexical, syntactical, and semantic analysis as well as static program analysis, optimization, and code generation. This course provides all necessary theoretical knowledge required to implement a compiler from scratch, which forms the practical part of the lecture. To get a course certificate, students must: Final grades will be based on the exam and the project.

News

Lecture Notes

Results

The following students have gained at least 50% of the exercise points. The results of both exams are also available now.

Student ID Final Exam Re-Exam Project Grade Final Grade
Points Grade Points Grade
2511042 16 5.0 - - - -
2514359 16 5.0 39.5 2.7 2.7 2.7
2515294 29 3.0 42.5 2.3 - -
2516088 - - 46 2.0 1.0 1.7
2518099 22.5 4.0 26 5.0 2.0 3.0
2518686 28 3.0 34 3.3 1.0 2.0
2518834 28 3.0 42 2.3 1.0 1.7
2518894 32 2.3 - - 3.0 2.7
2519766 28 3.0 46 2.0 1.0 1.7
2521139 21.5 5.0 27.5 4.0 1.0 2.7
2522025 25 3.7 - - 3.0 3.3
2522705 20.5 5.0 21 5.0 - -
2524568 40 1.0 - - 1.0 1.0
2525627 31 2.7 43 2.3 1.0 1.7
2525783 24 4.0 25 5.0 3.0 3.7
2526159 19 5.0 30.5 3.7 2.0 3.0
2526193 24 4.0 44.5 2.0 2.0 2.0
2526240 23 4.0 25.5 5.0 4.0 4.0
2526241 11.5 5.0 10.5 5.0 - -
2526415 31.5 2.3 45 2.0 2.0 2.0
2528532 28 3.0 35 3.3 1.7 2.3
2530270 30 2.7 - - 1.7 2.3
2530469 18 5.0 43.5 2.3 2.0 2.3
2530559 22.5 4.0 22 5.0 1.0 2.7
2530690 42.5 1.0 - - 1.0 1.0
2530699 29 3.0 24 5.0 1.0 2.0
2530947 35.5 1.7 44 2.0 1.0 1.3
2531407 10.5 5.0 26.5 5.0 - -
2531460 36 1.7 - - 1.0 1.3
2531557 37.5 1.3 - - 1.7 1.3
2531835 29.5 3.0 33.5 3.3 1.0 2.0
2535661 14.5 5.0 20.5 5.0 - -
2536539 15.5 5.0 14 5.0 - -
2536586 9.5 5.0 19.5 5.0 - -
2539125 25 3.7 - - 4.0 3.7
2539755 2 5.0 20.5 5.0 - -
2539760 12.5 5.0 21 5.0 - -
2540414 22.5 4.0 37 3.0 1.0 2.0
2540807 27 3.3 - - 4.0 3.7

Exercises

Exercise sheets will be handed out on Fridays in the lecture and can be downloaded below. Unless stated otherwise, exercises are due the respectively following week on Fridays before the lecture. The exercises will be discussed in the exercise groups the week after. Everybody has to do the exercises on their own. Group work is only for the practical project. Although the project assignments are printed on the exercise sheets, they have separate deadlines.

Tutorial groups

Project

In the project you will implement a compiler for a small subset of Java. The milestones of the project roughly reflect the structure of a compiler, which also structures the lecture. Although the milestones will not be graded, they serve as a strong indicator—for increasing either your efforts or your confidence. The compiler itself must be written in C or C++ as we will make use of a C library (libFirm) for the back end of the compiler. Below, you can find all materials related to the project:

Literature

If you spot any errors in the freshly translated book, please drop Prof. Wilhelm a note. The German version of some chapters: Parts of Compiler Design – Analysis and Transformation:

Literature list