CMSC 445: Compiler design

Spring 2012

Prof. Blaheta

Unless you go to work for a compiler company or do research in debugging or optimisation, it's relatively unlikely that you will be called upon to implement a traditional compiler. However, the main compiler components---lexing, parsing, and code generation---crop up separately in a much wider variety of applications; and a better understanding of the compilation process will make you a better programmer overall (and much better at deciphering some of the more cryptic error messages that compilers give from time to time).

Plus, there's a special thrill in running a compiler that you wrote yourself, and then running the executable it produces!

This class meets 2:00pm on MWF.


The main textbook is intended to be Aho et al, Compilers, 2e. ISBN 978-0-321-48681-1. The bookstore appears to be somewhat short of copies; contact me if this is a problem.

Also recommended are two references that will be really handy when we dive into the main compiler project: Prinz and Prinz, C pocket reference, ISBN 978-0-596-00436-1; and Levine et al, flex & bison (or the older lex & yacc). For the C reference, I particularly recommend the print copy as opposed to e-book.

Course materials

Labs, homeworks, projects

Board photos

Don Blaheta /