Advanced Compiler Design (263-2810)

Main content

Accordion. Press Tab to navigate to entries, then Enter to open or collapse content.



June 3rd, 2016 -- Final presentations from 9:15 - 10:00 and from 13:15 -  15:00.  Detailed schedule by mail.

May 27, 2016 -- Guest lecture at 13:15 (no lecture in the morning)

Mar 23rd, 2016 -- Lecture at 10:15, followed by recitation session (will be done by 11:55)

Mar 18, 2016 -- Lecture at 9:15 in CAB, no recitation

Mar 14, 2016 -- Web site online

Course Overview

This is a graduate course on advanced compiler construction.

Two developments are driving the need for new techniques of programming language implementation:

  • New hardware architectures (such as RISC and VLIW) require more complex optimizations than their predecessors. We discuss essential optimization techniques such as redundancy elimination, register allocation, and instruction scheduling.
  • Programming languages (such as Java and C#) that allow static analysis  provide novel features that need to be implemented efficiently.
  • Dynamic typing as used in languages like Python, JavaScript, or Ruby need compiler support for efficient execution.

We examine advanced language-implementation topics such as type-directed dispatch, garbage collection, dynamic linking, and just-in-time code generation.

These topics will be introduced in class alongside a programming project, in which students have the opportunity of applying their new knowledge in practice.

Course schedule

Lectures are given

  • Wednesdays 10:15 - 11:55
  • Fridays  9:15 - 10:00

in CAB G 51.

The rooms for the recitation sessions will be announced later. Some of the lecture hours will be devoted to other activities (tutorials, reviews, etc) or will be devoted to group meetings and some recitation sessions may be used for lectures. Please watch this page for updates and announcements.

Tentative schedule of lectures

This is a plan. No plan survives contact with reality.


Michael Faes, CAB H 83.1

Remi Meier, CAB H 83.1

Luca Della Toffola, CAB H 65


The homework is an important part of the course. You will not learn this material from listening to a lecture alone -- you have to do the homework.

Note: Do not hesitate to write on the mailing list or make an appointment with your TA if you have trouble with the homework!

Some of the homework tasks ask you to extend a compiler skeleton implemented in Java. Any code fragments are distributed via subversion. Your solutions to the homework must be submitted via subversion as well. Once you have registered a team, a directory will be made for you (this requires some manual work by the TAs, expect a reasonable delay).
The URL for your team is:<YourTeam> (case sensitive). You should log in with your nethz log in and password. If there are any problems please contact a TA immediately.

 Homework Out Due Material
HW0 - Set up compiler frameword, transition from basic compiler (PDF, 42 KB) 16/03/04 16/03/11 Slides (PDF, 445 KB)
HW1 - SSA Construction and Destruction (PDF, 87 KB)
16/03/11 16/03/24 Slides (PDF, 1.2 MB)
HW2 - SSA Optimizations (PDF, 70 KB)
16/03/24 16/04/15 Slides (PDF, 1.8 MB)
Project - Proposal (PDF, 71 KB) 16/04/08 16/04/22

Project Grading (PDF, 28 KB)

Javali Programs (ZIP, 171 KB)

Project - Revised project proposal (if necessary/optional)
Project - Milestone presentation
Project - Final presentation 16/06/01 and 06/03
Project - Report and implementation 16/06/10 Report template (ZIP, 685 KB)


40% of your grade is determined by homework (various tasks related to the topic of this course). 60% of the grade is determined by a project.

If you need to be away from Zurich during the time a project presentation is scheduled please contact the instructor by Mar 15.


  • Program development environment: Students in the past used Eclipse but you may also want to look at the Java IDE IntelliJ One can create a free JetBrains account with the ETH mail address to use the Ultimate version (though it's probably not necessary for the purposes of this course).
  • Linux: There's no time in class to explain the installation and maintenance of Linux in detail. The student association offers the "LinuxDays", a series of events especially designed to give students a fast and painless start in this topic. There, you will learn within two courses ("Linux in practice") everything you need to know for the basic console manipulations you will need for ETH. All courses and events are free. Visit the web pages for more information.
Page URL:
© 2017 Eidgenössische Technische Hochschule Zürich