The class this year is going to concentrate both on compilers per se and on program analysis.
We will look at compilers from the inside out, starting with intermediate representations and what you can do with them.
This will lead naturally to a variety of program analysis, semantic processing, and compiler optimizations.
As the course progresses we will look at translating between intermediate representations (including machine code) and
generating intermediate representations (i.e. parsing).
The syllabus is available here.
Engineering a Compiler, Second Edition, by Cooper and Torczon. An electronic version of the text can be found in /u/spr/courses/cs126.
The bulk of your grade (75%) will be based on your project, both in the final handin and the various reports that you will give during the semester. The take-home final will account for 10%. Class participation and homeworks will account for the remainder.
Lecture notes can be found here
The course will be project-based with the students working individually
or in small teams on either a compiler or a particular program analysis of interest to them.
The project ideas will be developed over the first few weeks of the course.