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.

Semester
2nd semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Taught in
Dutch
Faculty
Faculty of Sciences and Bioengineering Sciences
Department
Computer Science
Educational team
Steven Keuchel (course titular)
Activities and contact hours
26 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
61 contact hours Independent or External Form of Study
Course Content

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

Course material
Digital course material (Required) : Digital course material, Bijkomend materiaal, mogelijk als deel van de projectopgave, transparencies and code will be provided to the students through the online student platform. Additional material will be provided electronically, possibly as part of the project assignment.
Additional info

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.

Learning Outcomes

General competencies

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

 

Grading

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:

  • Oral exam with a relative weight of 1 which comprises 50% of the final mark.

    Note: oral exam with written preparation

Within the SELF Practical Assignment category, the following assignments need to be completed:

  • Project with a relative weight of 1 which comprises 50% of the final mark.

    Note: PROJECT (50%): a series of three or more projects in which the students are asked to implement a number of compilation passes. For each of the projects, an oral defence may be required. Students will have to be make the project either alone or in groups of two or three, as decided by the didactic team.

Additional info regarding evaluation

PROJECT (50%) + EXAM (50%)

Students cannot pass the course unless they participate in both the project and the exam.

Allowed unsatisfactory mark
The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.

Academic context

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