Compiler Construction


Course Objective

Get hands-on experience with the internals of modern compilers.

Course Content

This course gives an introduction to the internals of modern compilers
with a unique twist: the emphasis is not just on translating a source
program into an executable binary, or traditional optimization passes,
but also on software hardening techniques to enhance the target
program’s security. As a result, the student learns about all
fundamental aspects of compilers, but also the performance and security
implications of the code it generates. To address these concerns,
students learn compiler-based techniques that improve both the
performance and the security. The course allows students to gather
practical, hands-on experience on building compiler components with
weekly assignments.

The course focuses on the design of the major components of a modern
compiler pipeline: frontend (focus on lexing and parsing), intermediate
representation or IR (focus on optimizations, transformations, and
hardening), and backend (focus on code generation). In both the lectures
and the assignments, we emphasize what compiler builders encounter in
practice, rather than the details of all manners of parsing algorithms.
Specifically, the assignments focus on building a compiler for a C-like
language using the LLVM compiler framework, analyzing the code so that
we can optimize it, and adding additional checks to eliminate common
vulnerabilities that are common to C-like languages. All the assignments
build on top of a given framework and require localized extensions in
Python and/or C++ to implement language features, optimizations,
transformations/instrumentations, and code generation features.

Note: this is a very intensive, hands-on course. It is important to be
able to start immediately. For this, you need access to a computer with
the VirtualBox x86 virtualization environment installed.

Teaching Methods

Lectures, Practical.

Method of Assessment

The final grade is the weighted average of the 3 assignments. There is
also a bonus assignment (of max 1 point).

There is no resit opportunity for the assignments.

Target Audience


Recommended background knowledge

Basic knowledge of Python and C/C++ is strongly recommended.

General Information

Course Code XB_0003
Credits 6 EC
Period P3
Course Level 300
Language of Tuition English
Faculty Faculty of Science
Course Coordinator prof. dr. ir. H.J. Bos
Examiner dr. C. Giuffrida
Teaching Staff prof. dr. ir. H.J. Bos
dr. C. Giuffrida

Practical Information

You need to register for this course yourself

Last-minute registration is available for this course.

Teaching Methods Seminar, Lecture, Practical
Target audiences

This course is also available as: