CS134b: Compiler Design Laboratory

Course Description
This course is an overview of the internal structure of modern compilers, with an emphasis on implementation techniques. Topics covered include lexical scanning, parsing techniques, static type checking, code generation, dataflow analysis and other optimization techniques, storage management, and execution environments. As part of the course, you will build a working compiler.

Web Page
The course web page is located at http://www.cs.caltech.edu/cources/cs134/cs134b. All course materials will be available at this site.

Course Meetings
Lectures are currently being held in 74 Jorgensen, MWF 2-3pm. Attendance at lecture is expected. The lectures will complement rather than replicate material in the textbook.

Teaching Staff
The best way to reach the course staff is by sending mail to cs134-admin@metaprl.org. Please include cs134 in the Subject line.

 Name Title Email Office Office Hours
Jason Hickey Asst Professor jyh@cs.caltech.edu 260 Jorgenson MW 3-4pm
Justin Smith TA justins@cs.caltech.edu 160D Jorgensen Thu 8-9pm
Suleyman Gokygit TA sg@cs.caltech.edu 66 Jorgensen Thu 3-4pm
Adam Granicz TA granicz@cs.caltech.edu 158 Jorgensen Tue 2-3pm

Required Reading
Modern Compiler Implementation in ML. Andrew Appel. Cambridge University Press, 1998. ISBN 0-521-58274-1.

Other Reading
Compilers -- Principles, Techniques and Tools. Aho, Sethi and Ullman. Addison-Wesley, 1988. ISBN 0-201-10088-6. (The Dragon Book)

Advanced Compiler Design and Implementation. Steve Muchnick. Morgan Kaufmann Publishers. ISBN 1-558-60320-4.

Mail lists

There are several mail lists you can use to discuss the course material.

Assignments and Grading
The compiler project is divided up into five programming assignments that are due at various points throughout the term. Compiler projects will be performed by groups of two or three students. The same groups will be maintained throughout the semester.

Programming assignments are due online.

The breakdown of points per assignment is as follows:

Programming Assignment 1

10

Programming Assignment 2

20

Programming Assignment 3

20

Programming Assignment 4

20

Programming Assignment 5

30