Format | Lecture course with lab sessions and project work |
Curriculum | BSc Informatica |
Block | 2a (Feb 1 - Mar 27, 2016) |
Status | Constrained choice (2 of 3) |
ECTS | 6 credits |
Language | Primarily English, Dutch where needed |
Objectives | To develop the ability to design and implement compilers for diverse purposes. |
Contents | As implementations of programming languages compilers are integral parts of any computing system software stack. The more general task of compilers to transform structured text from one format to another is ubiquitous in all areas of computer science. Step-by-step the course covers all aspects of modern compiler design and implementation: lexical and syntactical analysis, context/type checking and inference, high-level code transformations/optimisations, target code generation and the interplay between compilers and runtime/operating systems. A model programming language that exposes common imperative programming features, as found in languages such as C, Pascal or Java, serves as a case study throughout the course. Organised in the form of a software engineering project participants develop a fully-fledged compiler for this language targeting a virtual machine similar to the Java Virtual Machine. |
Lecturer | Dr Clemens Grelck |
Assistants |
Floris den Heijer Simon Polstra Merijn Verstraaten |
Lectures |
Tue, 13-15, G2.10 Thu, 09-11, A1.04 |
Labs |
Tue, 15-17, D1.111 Thu, 11-13, F2.04 During the lab on Tuesday, Feb 2, we will explain the project assignment. During the lecture and lab on Thursday, Feb 4, you will receive an introduction to the compiler construction framework used during the course. Your presence during these sessions is essential!! |
Exam | We have no written exam; the final grade is determined by assessment of the project and the weekly assignments. |
Grading | Project (70%), Assignments (30%) You need a minimum grade of 6 in each category to pass the course! Both the project and the weekly assignments are to be worked on (!) and submitted in groups of two students. If we have reason to believe that the workload and contributions in a group are not somewhat equal, we reserve the right to conduct individual interviews. |
Slides | Will be made available on Blackboard after the lecture. |
Contents |
|
Project |
In the project we implement a fully-fledged compiler for a non-trivial model language named CiviC
("Civilised C"). The language combines essential ideas from C, Pascal and Fortran
into a fairly simple language design that allows us to focus on essential concepts in
compilation techniques rather than providing support a complete real world programming
language. The complete language, including all extensions, features the usual structured
programming constructs (loops and branches), modules with information hiding and
separate compilation, nested function definitions with private scopes and, last not
least, fully-fledged multi-dimensional arrays.
|
Assignments | The purpose of the theoretical assignments is to deepen your understanding of compiler construction and to complement the practical work undertaken in the project. The assignments will be made available on Blackboard. |
Mailing Lists |
The UvA mailing list CoCo2016 serves as the primary medium of communication between
lecturers and participants as well as among participants themselves.
Subscription to the mailing list is controlled and restricted to participants of the
course.
Traffic on the mailing list is archived; access to the archives is restricted to
participants.
Please, subscribe here.
The UvA mailing list CoCo2016-Team serves as a convenient way to reach all members of the teaching team at once. Participants of the course are allowed to write to this mailing list, but are not subscribed to it. |
Guest lectures | As a novelty of 2016, the Compilerbouw course features two guest lectures by renowned industrial compiler experts. Each lecture is planned to take about 45 minutes including questions. After the usual break we will then continue with our regular programme. |
March 1: |
|
Abstract: |
|
Guest lecturer: |
|
March 15 |
|
Abstract: |
|
Guest lecturer: |
|
Background Material | Bison Manual |
Literature |
The course does not follow any specific text book.
The following list summarises a number of interesting textbooks on various
aspects of the course.
While books are always a helpful source of background information,
I do not expect participants of the course to buy any or all of these,
nor do I receive revenues from any of these books.
|