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
Objectives

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

Contents

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
Teaching
Assistants
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%)
Slides

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

Project

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
Literature
  • 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