Course ObjectiveGet hands-on experience with the internals of modern compilers.
Course ContentThis 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
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 MethodsLectures, Practical.
Method of AssessmentThe 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.
Recommended background knowledgeBasic knowledge of Python and C/C++ is strongly recommended.
|Language of Tuition||English|
|Faculty||Faculty of Science|
|Course Coordinator||prof. dr. ir. H.J. Bos|
|Examiner||dr. C. Giuffrida|
prof. dr. ir. H.J. Bos
dr. C. Giuffrida
You need to register for this course yourself
Last-minute registration is available for this course.
|Teaching Methods||Seminar, Lecture, Practical|
This course is also available as: