This course covers the design and implementation of compiler and runtime systems for programming languages. The contents of the course include concrete and abstract syntax, parsing, scopes and environments, type checking, runtime support, translation, code generation, static analysis, register allocation.
Description of qualifications The course provides the participants with insights into the theory of compilation of programming languages and practical experience with the application of compiler technology. At the end of the course, the participants will be able to: i) identify and formulate compilation phases; ii) describe and apply principles and theory of compilation of programming languages; iii) implement a compiler for a modern high-level programming language and analyze its properties; iv) evaluate and reflect how compiler technology influences the design of programming languages.The lectures will cover the general topics as well as specific issues in relation to the project, and solutions to weekly exercises. The language of instruction is English.
Additional help may be obtained through the web board or by e-mail.
The course textbook that is available from the university book store (Gad Stakbogladen Naturfag):
Andrew W. Appel
Modern Compiler Implementation in ML
Cambridge University Press
ISBN: 0-521-60764-7
Our main OCaml reference is the following online OCaml book OCaml Programming: Correct + Efficient + Beautiful
For selected topics and tools, we will refer to the respective manual pages and official documentation.
All assignment material and supplimentary reading is available in the AU Compilation handbook.
The schedule is tentative all term. Stay tuned for updates. Reading instructions for each lecture are marked with the book icon . Note that the material in the lectures do not always correspond one-to-one to the material in the reading. We recommend the reading to happen in sync with the schedule, that is to happen before or shortly after each lecture. Reading marked as bonus is not required. Do it only if you have the time.