Advanced Compilers


Fall 2002 (Aug 20 - Dec 3)
TTh 2:00 - 3:15, SN 115

Instructor: Jan Prins, SN 355, Tel: 962-1913, prins@cs.unc.edu
Office hours: TBA and by appt.

Secretary:  Madelyn Mann
SN 318, Tel: 962-1922, mann@cs.unc.edu

Course Overview

This is a graduate course on the design and implementation of optimizing compilers for modern programming languages and computer architectures. The use of compiler generation tools and algorithms for tree and graph based representations of programs are emphasized in this course. A substantial compiler construction project is the principal assignment in this class.


Students should be familiar with the following areas (as covered in the indicated UNC courses): In addition, familiarity with the general structure and operation of compilers, interpreters, assemblers and linkers is recommended but not required. (COMP 140: Translators).

Text and Readings

The general text for the class will be Appel's Modern Compiler Implementation in Java. Two other versions of this text, respectively using C and ML as the compiler implementation language, are interchangeable with the Java text.

For students who already have a suitable general text on compilers, and plan to implement advanced optimizations, there are some suitable advanced texts available including Morgan's Building an Optimizing Compiler and Allen & Kennedy's Optimizing Compilers for Modern Architectures.

Some material will be covered from supplementary readings to be distributed in class.

Assignments and Grading

Grades will largely be based on the course project. A small number of written assignments and class participation contribute up to 30% of the grade.

Course Project

The standard project is the construction of a compiler for a small language: Tiger, the mini-language described in Appel's text, or mini-Java, a subset of the Java language. A standard compiler should generate code for a MIPS R2000/R3000 processor to be executed under the SPIM simulator or linked to run on one of the SGIs remaining in the department.

The project may be performed individually or by a team of two students. The basic compiler can be extended in a number of different ways:

Each extension carries a point score. An extension is expected for a team of two students, and recommended for individual projects. In a team project, the point score of each student is 80% of the point score for the project.

An alternate compiler project (differing in source language, implementation language, or target language) can be substituted with permission of the instructor.

The project and team composition must be finalized by September 10. The project will include intermediate milestones and deliverables.


Topics and approximate number of lectures to be spent on each:
This page is maintained by prins@cs.unc.edu. Send mail if you find problems.