ICS 211: Advanced Compiler Construction - Winter Quarter 2001


Course Goals

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

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

Prerequisites

An understanding of the general principles of compiler design is essential for this course. For example, successful completion of ICS142 would constitute an adequate preparation.

Logistics

Topical Outline

Grading and Course Requirements

In a substantial programming project divided into 3 separate stages, students will apply their new knowledge by constructing an optimizing compiler. Each of these steps accounts for 1/3 of the final grade. Students may elect to work in groups of up to three persons but must then choose the presentation option below.

Students may also elect to research a topic relevant to the course and then present it in class (30 minutes total). For students doing the project entirely on their own plus a presentation, the final grade will be 1/3 based on the presentation, 1/3 on the project, and the final 1/3 determined by the better grade of these two. For students doing the project as a group, the presentation counts 1/2 and the project 1/2.

Students outside the CSN area may elect the S/U or P/N option and complete the course by giving only a presentation. (Note: if you do only the presentation, you will not be given a letter grade. If you complete presentation and project, you have the choice between letter grade and S/U grade and only need to make that choice when you turn in your project.)

Class Project

If you want to work from a ready-made parser for the source language Pascal-2001, you may elect to use the one from my ICS145A class that can be found on Matthew Beers web page. You may use only this parser, or write your own - in particular, you must not use any work done by students who took this course previously, as this will be considered "cheating". Note: If you elect to work from Matthew's compiler, you will be expected to generate code that actually runs on the simulator provided with it. If you build your own compiler from scratch, you don't need to generate "real" code but can use the symbolic instruction set used for the intermediate code.

The VCG tool can be found here.

Test Programs

Click here to get to the test programs.

Reading

Much of the material covered in the course is not yet adequately supported by current textbooks (for example, just-in-time compilation has only recently become practical on account of faster processors). Hence, the course will draw less from textbooks than from the relevant research papers.

There are currently two reasonably good textbooks on optimizing compilers, both of which are relatively new. The better of the two is "Building an Optimizing Compiler" by Morgan, and the other is "Advanced Compiler Design & Implementation" by Muchnick. However, both books have their problems, and both of them are strongly biased towards specific compilers that the respective authors have been personally involved with.

"Compilers - Principles, Techniques and Tools" by Aho, Sethi and Ullman is another good, albeit long outdated book.


6th December 2001 - franz@uci.edu