Compilers and Operating Systems

Format Lecture course with lab sessions
Curriculum MSc Grid Computing
Block 2a (Feb 1 - Mar 26, 2010)
Status Compulsory
ECTS 6 credits

To develop the ability to design and implement compilers for various purposes and to understand the principles of major constituents of modern operating systems.


This course naturally falls into two tracks: compiler construction and operating systems. In the first track we will cover foundations of compiler archictecture: lexical and syntactical analysis, context/type checking and inference, high-level code transformations and optimisations and target code generation. A simple programming language serves as a case study throughout the course. In the operating system track we will focus on selected aspects of resource management.

Lecturer Dr Clemens Grelck
Dr Michael Hicks
Simon Polstra
Lectures Tue 10-12 REC-B3.44
Wed 10-12 REC-B3.44 (throughout February)
Wed 10-12 SCP-F3.20 (throughout March)
Labs Tue 13-16 REC-P1.27
Fri 09-12 REC-P1.26
During the lab session on Friday, Feb 5, you will receive an introduction to the project assignment and to the compiler construction framework used during the course. Your presence during this lab session is essential!!
Exam New: Mon, Mar 22, 16-18, SCP-F3.20
Location SCP: Science Park 107 (Nikhef building)
REC: Roeterseiland Complex
Grading Project (50%), Assignments (25%), Exam (25%)

Disclaimer: These are the slides of my lectures, not more, not less. They do not form a tutorial suitable for self-studying. For instance, a slide may well miss an important aspect pointed out during the lecture, or it may contain deliberately erroneous code or examples of how not to solve some problem.
Chapter 1: Introduction and Motivation
Chapter 2: Compilers at a Glance
Chapter 3: Lexicographic Analysis
Chapter 4: Syntactic Analysis
Chapter 5: Semantic Analysis
Chapter 6: Optimisation
Chapter 7: Code Generation
Chapter 8: Memory Management


In the project we implement a fully-fledged compiler for a non-trivial model language named CivC ("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.

Project Description: CivC Compiler 1.0
Project Description: CivC Compiler 1.1
Project Description: CivC Compiler 1.2
Project Description: CivC Compiler 1.3

CivC-VM Manual 0.1

Project due date: April 5, 2010.

Assignments The purpose of the theoretical assignments is to deepen the understanding of compiler construction and to complement the practical work undertaken in the project.
Assignment 1
Assignment 2
Assignment 3
Assignment 4
Assignment 5
Assignment 6
Mailing List The google groups mailing list uva-compos-2010 serves as the primary medium of communication among participants of the course between lectures and lab sessions. This is a restricted mailing list solely accessible by invitation of the lecturer. Please, drop him an email if you are registered for the course.
Background Material Bison Manual
  • Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools, Addison Wesley, 2007.
  • Keith D. Cooper, Linda Torczon: Engineering a Compiler, Morgan Kauffmann, 2004.
  • Andrew W. Appel, Maia Ginsburg: Modern Compiler Implementation in C, Cambridge University Press, 2004.
  • D. Grune, H. Bal, C. Jacobs, K. Langendoen: Modern Compiler Design, John Wiley & Sons, 2000.
  • Randy Allen, Ken Kennedy: Optimizing Compilers for Modern Architectures, Morgan Kauffmann, 2000.

Valid HTML 4.01!     Valid CSS!             Dr. Clemens Grelck