6 ECTS credits
178 h study time
Offer 2 with catalog number 4005284FNR for all students in the 2nd semester at a (F) Master - specialised level.
Basic principles and techniques that are used in modern compiler construction.
The course follows the “nanopass” approach in which a compiler is constructed as a collection of many fine-grained passes [Sankar2005].
It will cover in particular a selection of the following compiler passes:
* Syntax and semantics of assembly languages
* Runtime systems of programming language implementations
* Instruction selection
* Register allocation (liveness analysis, conflict detection, graph-coloring based register allocation with stack spilling)
* Compiling structured control flow to assembly language constructs (jumps and basic blocks)
* Abstracting control flow (monadic or continuation-passing style, tail calls)
* Function call and return (non-tail calls, calling conventions, call stack)
* Supporting data structures in memory (heap, memory safety)
* Compiling dynamic typing (tagging, structured data)
* First-class computations (closure conversion, lexical scope)
* Surface language features (implicit casts, syntactic sugar)
[Sankar2005] Dipanwita Sankar, Oscar Waddell, and R. Kent Dybvig. 2005. Educational Pearl: A Nanopass framework for compiler education. J. Funct. Program. 15, 5 (September 2005), 653–667. DOI:10.1017/S0956796805005605
Recommended background:
To follow this course, students must be familiar with functional programming in Scheme or Racket, i.e. use of first-class functions, recursion over list and trees, etc.
The VUB courses 'Structure of Computer Programs' / 'Higher-Order Programming' are sufficient.
The student will
* have an active understanding of the techniques and algorithms that are relevant for compiler construction
* be able to construct a basic compiler for an imperative programming language
* understand the general pattern of gradually transforming a complex problem into well-defined and separately meaningful intermediate problems.
* be able to evaluate new developments in compiler construction techniques and their usefulness for specific purposes
* to communicate clearly about the above subjects
The final grade is composed based on the following categories:
Oral Exam determines 50% of the final mark.
SELF Practical Assignment determines 50% of the final mark.
Within the Oral Exam category, the following assignments need to be completed:
Within the SELF Practical Assignment category, the following assignments need to be completed:
PROJECT (50%) + EXAM (50%)
Students cannot pass the course unless they participate in both the project and the exam.
This offer is part of the following study plans:
Master of Photonics Engineering: Standaard traject (only offered in Dutch)
Master of Applied Sciences and Engineering: Applied Computer Science: Standaard traject (only offered in Dutch)
Master in Applied Sciences and Engineering: Applied Computer Science: Standaard traject
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (only offered in Dutch)
Master of Applied Sciences and Engineering: Computer Science: Artificial Intelligence
Master of Applied Sciences and Engineering: Computer Science: Multimedia
Master of Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering
Master of Applied Sciences and Engineering: Computer Science: Data Management and Analytics