Instructor: Professor X. Sean Wang
Meeting Times: MWF 9:05-9:55am, Classroom: Votey 367, UVM catalog entry..
Scope of the course: Practice in design and implementation of translators for a MiniJava language. Regular and context-free grammars, parsing, code generation. Interpreters. Run-time storage administration for block-structured languages.
Prerequisite: CS 103 (Programming Languages) and CS 243 (Theory of Computation).
Required Textbook: Modern Compiler Implementation in Java, 2nd Edition, by Appel (with Palsberg), Cambridge University Press, 2002. ISBN 0-521-82060-X.
Optional Textbook: Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman, Addison-Wesley, 1986, ISBN 0-201-10088-6.
Course work: Students are required to attend all the lectures. There will be homework assignments, including programming assignments, and two exams. Graduate students are required to present advanced topics assigned by the instructor.
Programming requirements: This class is programming intensive. All programming will be done in Java. The programming assignments will be (almost) always be accompanied with JUnit test requirements.
Approximate schedule for the semester (including assignments)
| Week | Topics | Assignments |
| wk 1/16 (2 classes) | Introduction, Java, JUnit | 1 (due 1/27 Friday) |
| wk 1/23 | Lexical analysis | 2 (due 2/1) |
| wk 1/30 |
Parsing | 3 (due 2/15) |
| wk 2/6 | More on parsing | |
| wk
2/13 |
Abstract syntax | 4 (due 3/1) |
| wk 2/20 (2 classes) | Semantic analysis | |
| wk 2/27 | Activation records | 5 (due 3/15) |
| wk 3/6 | Translation to intermediate code | |
| wk
3/13 |
Review & midterm exam | |
| wk 3/20 (no class) | Spring recess | |
| wk 3/27 | Basic blocks and traces | 6 (due 4/7 Friday) |
| wk 4/3 | Instruction selection | 7 (due 4/19) |
| wk 4/10 | More on instruction selection | |
| wk 4/17 | Liveness analysis | 8 (due 4/28 Friday) |
| wk 4/24 | Register allocation | 9 (due 5/3) |
| wk 5/1 (2 classes) | Advanced topics | |
| 5/5 (9-11:30am) | Final exam |