COMP 412: Topics in Compiler Construction
Keith Cooper
Department of Computer Science
Rice University
Houston, Texas, USA
Fall 2012: Room 1042, Duncan Hall, Monday, Wednesday, Friday, 11:00am

Notes


Summary

Comp 412 provides the student with an overview of the issues that arise in the design and construction of translators for programming languages. The course emphasizes techniques that have direct application to the construction of compilers. However, many of the same concepts find application in the implementation of interpreters.

The course consists of lectures, homework assignments, exams, and several laboratory exercises. A schedule for labs and examinations will be posted soon. The lectures correspond, with a few detours, to a front-to-back tour of a compiler. The programming exercises attempt to illuminate particular problems. Students will not build a complete compiler in the course.

Textbook

We will use the book Engineering a Compiler, Second Edition, by Cooper and Torczon, published by the Morgan-Kaufmann imprint of Elsevier. We have started an Errata site; it will, undoubtedly, grow over time. Copies can be purchased at the Rice Campus bookstore, direct from the publisher, or at your favorite online retailer. If you find errors, please let the authors know. The authors donate an amount equal to the royalties that would be generated by the enrollment in Comp 412 to the Torczon fellowship fund at Rice, which provides financial support to a Rice undergraduate (almost always a declared Computer Science major).

You may be tempted to download a pirated copy from the Internet. The only pirated digital copies that we have seen are extremely early manuscripts of the first edition; they lack much of the material that will be covered in the course. Copies of the text are on reserve in Fondren Library.

One problem with using a text written by the professor is that the lectures and the book take, largely, the same approach to the material. You are encouraged to consult other texts and other sources; a number of other texts will be on reserve in Fondren Library. They can provide additional sources of enlightenment and alternative viewpoints on the material covered in the course.

Lecture Notes

I will post PDF-format copies of the slides used in class as they become available. Typically, they will be available several hours before lecture. In previous years, students have found it effective to print the small form of the slides and use them to take notes.


Programming Assignments

The class will have four programming exercises. The first lab will be available on the first day of classes and will have a relatively short timeline. All lab materials will be available exclusively online. The teaching assistants will establish a newsgroup for discussion of the course and the programming assignments.

The philosophy for programming exercises in Comp 412 is simple. Each lab is intended to have a high ratio of thought to programming. Thus, you will build components that might fit into a compiler, rather than building a complete compiler. We have abstracted away much of the routine work and focused the labs on tasks that should give you deeper insight into a specific problem---compiling, register allocation, parsing, and instruction scheduling.


Homework

The class will have periodic homework assignments. Again, the point of the homework is to cement concepts in your mind by having you use those concepts. Homework is not intended as busywork or punishment. It is an essential part of the learning experience.

Homework assignments are only posted online.


Supplemental Material

From time to time, I may post additional material that relates to the topics being covered in class.

Personnel


Comp 412 Home Last modified Friday, 30-Mar-2012 17:43:45 CDT.