Compiler Construction

2019-2020
Dit vak wordt in het Engels aangeboden. Omschrijvingen kunnen daardoor mogelijk alleen in het Engels worden weergegeven.

Doel vak

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

Inhoud vak

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.

Onderwijsvorm

Lectures, Practical.

Toetsvorm

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.

Doelgroep

3CS

Aanbevolen voorkennis

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

Algemene informatie

Vakcode XB_0003
Studiepunten 6 EC
Periode P3
Vakniveau 300
Onderwijstaal Engels
Faculteit Faculteit der Bètawetenschappen
Vakcoördinator prof. dr. ir. H.J. Bos
Examinator prof. dr. ir. H.J. Bos
Docenten prof. dr. ir. H.J. Bos
C. Giuffrida

Praktische informatie

Voor dit vak moet je zelf intekenen.

Voor dit vak kun je last-minute intekenen.

Werkvormen Werkcollege, Hoorcollege, Practicum
Doelgroepen

Dit vak is ook toegankelijk als: