Course description
Compilers are often known as translators and for good reason: their job is to take programs written in one language and translate them to another language (usually assembly or machine language) that a computer can execute. It is perhaps the ideal meeting between the theoretical and practical sides of computer science. Modern compiler implementation offers a synthesis of the following:
- language theory - how languages (both natural languages and programming languages) can be represented on and recognized by a computer
- software design - how practical software can be developed in a modular way, e.g., how components of one compiler can be connected to components of another compiler to form a new compiler
- computer architecture - understanding how modern computers work
During the semester, we will write a program implementing a nontrivial compiler. Conference work will allow students to pursue different aspects of compilers such as compilation of object-oriented languages, automatic garbage collection, compiler optimizations, and applications of compiler technology to natural-language translation.
Breaking news
(11/13)The complete please-parse-tree-unparser is due Sunday afternoon (11/16). The relevant files are in: ~msiff/compilers/stub-please/
(11/13) Mark your calendars: Programming Fest, Monday 11/24 at 8pm in Science 109.
(10/29) An initial version of the please reference manual is now available.
(10/15) The latest assignment is on-line and due Wednesday, 10/22.
(10/14) Don't forget - a CFG for our programming language is due tomorrow (10/15).
(09/25) Files for latest project are available