This course is an introduction to the specification and implementation of modern optimizing compilers. Topics include conventional ones like lexical analysis, parsing, type checking, dataflow analysis, optimization, and code generation, as well as unconventional ones like self-optimizing programs, machine learning in smart compilers, and the use of language processing technology in security and verification of programs.
There will be 4 or 5 substantial programming assignments and a final project.
The final project involves building a compiler for an object-oriented language.
Prerequisites: Grade of C or better in CS 310/310H, 336/336H, and Math 408D/408M OR permission of instructor.
Book (suggested): Compilers: Principles, Techniques, and Tools by Aho et al. Addison-Wesley Publishers