Course Syllabus

Prerequisites: You need to have taken a basic undergraduate or graduate compiler course. You need to be able to read and write C++.

Compilers are awesome. If you don't think so, read this paper. If you still don't think so, then probably this isn't a good class for you to take. We'll be studying the technologies that live in the "middle end" of a compiler, focusing particularly on static analysis and the optimizations that are driven by static analysis. We will not talk about parsing at all because parsing is boring. Programming assignments and projects will be based on LLVM. You will implement at least one brand new LLVM optimization before finishing this class. You will also use compiler technology to find at least one bug in an open source program, and you will report that bug to people who can do something about it.

Since this is a high-level special topics class, its direction will be partially driven by you, the students. The rest of the driving will be done by me. To see what I'm interested in, take a look at some compiler papers I've written:

I also sometimes write about compilers at my blog.

Course Summary:

Date Details Due