TU Delft
Year
NEDERLANDSENGLISH
Organization
Education Type
Education print this page print this page     
2017/2018 Electrical Engineering, Mathematics and Computer Science Master Computer Science
IN4303
Compiler Construction
ECTS: 5
Responsible Instructor
Name E-mail
Prof.dr. E. Visser    E.Visser@tudelft.nl
Contact Hours / Week x/x/x/x
2/2/0/0 coll + 4/4/0/0 pract
Education Period
1
2
Start Education
1
Exam Period
2
3
Course Language
English
Expected prior knowledge
- programming (required)
- software engineering (advised)
- programming languages (advised)
Course Contents
Compilers translate the source code of programs in a high-level
programming language into executable (virtual) machine code.
Nowadays, compilers are typically integrated into development
environments providing features like syntax highlighting, content assistance, live error reporting, and continuous target code generation. This course is about the efficient construction of compilers and their integration in the IDE. It consists of three parts:

The first part focuses on declarative specification of compiler
components as supported by state-of-the-art tools for compiler
construction, including lexical syntax, context-free syntax, static semantics, and code generation.

In the second part, we address techniques for the compilation of
imperative and object-oriented languages, including activation
records, memory management, register allocation, and optimization techniques in detail.

The third part takes a closer look on the inside working of compiler components and their generators. In particular, we study parsing algorithms and parser generation.

The practical work consists of constructing a compiler for a small object-oriented language using the tools introduced in the first part of the course. In particular, students work with the experimental Spoofax Language Workbench that is under development at TU Delft.
Study Goals
- to be able to specify a language in a declarative style

- to be able to construct a compiler from such specifications with
state-of-the-art compiler construction tools

- to understand aspects of language definition

- to understand the working of compiler components realizing these
aspects
Education Method
Lectures and lab work. Expected workload is 28 hours for attending lectures, 56 hours for attending labs, 56 hours for self study and work on lab assignments.
Computer Use
The lab will be done using the Spoofax Language Workbench, which is available as an Eclipse plugin. Students can download a version of Eclipse with Spoofax pre-installed. Updates to Spoofax may be published during the course.
Literature and Study Materials
Book "Modern Compiler Implementation in Java. Second Edition" by Andrew Appel & Jens Palsberg. Cambridge University Press, 2002. ISBN-13: 978-0521820608

Selected papers from the literature

Tool documentation
Books
Andrew Appel, Jens Palsberg: Modern Compiler Implementation in Java, 2nd Edition. Cambridge University Press, 2002. ISBN-13: 978-0521820608
Assessment
Weighted average of a closed book written exam and lab assignments. Both have weight 0.5 and both should be 5.8 or higher. The weighted average should be 5.8 or higher.
There is a resit for the written exam.
Exam Hours
There will be a closed book written examination in the exam period after the first semester. The assessment of the lab assignments will be done during the first semester or in the exam period after the first semester. The resit of the closed book written exam is in the exam period of Q3.
Permitted Materials during Tests
Books, print-out of pdf files of the lecture slides and lecture notes are not permitted during the written examination
Judgement
The final grade is the weighted average of a closed book written exam and lab assignments. Both have weight 0.5 and both should be 5.8 or higher. The weighted average should be 5.8 or higher.
The grade for the resit replaces that for the written exam if it is higher.