Fall 2009: Room 1046, 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.
We will use the book
Engineering
a Compiler, by Cooper and Torczon, published by
the Morgan-Kaufmann imprint of Elsevier.
Copies can be purchased at the Rice Campus bookstore or your favorite
online retailer.
Be sure to visit the
Errata site; it contains a partial list of errors in the first
printing.
(The version available on BitTorrent is an early manuscript and
differs significantly from both the first and second printing of
the published book.
The authors donate the share of royalites that would be generated by
the number of students enrolled in Comp 412 to the Torczon fellowship
fund at Rice University.)
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 three major programming exercises.
The materials for the labs will only be available 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---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.
None yet.
Personnel
Instructor: Keith Cooper, DH 2065
Office Hours: Monday afternoon, 2 to 3PM, and by appointment.
Note: I am a terrible email correspondent. If you feel I am
ignoring you, it is neither personal nor selective.
Pick up the phone and call me at x6013.
Teaching Assistants:
Sagnak "Sonic" Tasirlar
DH3097
Do not hesitate to contact me with your questions at < firstname>@rice.edu
Office Hours: Monday, Wednesday, Friday 1pm-2pm ; for different times email for appointment
Florin Dinu
e-mail: fd2 at ... , Office: DH3003
Office Hours: to be determined