Speaker Dr. Michael Petter
Location MI 00.13.009A
Date Monday, Tuesday, 10:10 - 11:40
Module IN2040


Project presentations will take place on Monday, July 29 at 12:30 in the room 02.07.034.


While trying to produce code for a programming language like Prolog, one quickly realizes that one would like to use certain instructions during the translation which are not already available on concrete machines. On the other hand, instruction sets of modern computers are changing so quickly that it doesn't seem useful for the compiler to depend on some arbitrarily chosen instructions. Such a dependance would mean that in a few years one would feel obliged to rewrite the compiler anew. With the implementation of the first Pascal compilers, one already arrived at the idea of first generating code for a slightly idealized machine, each of whose instructions then only need to be implemented on different target machines. Translation of modern programming languages like Prolog, Haskell or Java are also based on this principle. On one hand this facilitates portability of the compiler. On the other hand this also simplifies the translation itself since one can choose a suitable instruction set according to the programming language to be translated. In particular, we consider:

  • the translation of C;
  • the translation of a functional language;
  • the translation of Prolog;
  • the translation of a somewhat object oriented C
  • the translation of a concurrent dialect of C.


Obtain lecture recordings at TTT .


Tutorials take place on Thursdays 16:00 - 17:30 in the room 02.07.014.

You can access exercise sheets in Moodle.

Student forum link: Piazza.


Questions may be answered in English or German.

You will be allowed to bring a double-sided (hand- and/or machine-written) DIN A-4 cheat sheet to the exam.

The exam is scheduled for August 1, 11:00 - 12:30 in the lecture room MW 0001, Gustav-Niemann-Hörsaal (5510.EG.001).

The retake exam will take place on Tuesday, October 8 at 17:00 - 18:30 in Georg-Kühne-Zeichensaal (5505.01.550). Registration period is September 9 - 23.