Instructor: Professor X. Sean Wang
Meeting Times: MWF 9:05-9:55am, Classroom: Votey 367
Purpose 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.
Reference books:
Compilers: Principles, Techniques, and Tools by Aho, Sethi, and Ullman, Addison-Wesley, 1986, ISBN 0-201-10088-6.
Introduction to Java Programming Fourth Edition, by Y. Daniel Liang, Prentice Hall, ISBN: 0-13-100225-2 (or any good Java books).
On-Line: http://www.cs.uvm.edu/~xywang/cs202. Students are required to read the posted materials on this website. New materials are posted frequently and students must visit the site (don't forget to refresh the page!) at least twice a week.
Course work: Students are required to attend all the lectures. There will be five 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 always be accompanied with JUnit test requirements.
Approximate schedule for the semester (including assignments)
| Week | Topics | Assignments |
| wk 1/19 (2 classes) | Introduction, Java, JUnit | 1 (due 1/28) |
| wk 1/26 | Lexical analysis | 2 (due 2/4) |
| wk 2/2 | Parsing | 3 (due 2/18) |
| wk 2/9 | More on parsing | |
| wk 2/16 (2 classes) | Abstract syntax | 4 (due 3/3) |
| wk 2/23 | Semantic analysis | |
| wk 3/1 | Activation records | 5 (due 3/8 Monday) |
| wk 3/8 | Review & midterm exam | |
| wk 3/15 (no class) | Spring recess | |
| wk 3/22 | Translation to intermediate code | 6 (due 3/31) |
| wk 3/29 | Basic blocks and traces | 7 (due 4/7) |
| wk 4/5 | Instruction selection | 8 (due 4/21) |
| wk 4/12 | More on instruction selection | |
| wk 4/19 | Liveness analysis | 9 (due 4/28) |
| wk 4/26 | Register allocation | 10 (due 5/5) |
| wk 5/3 (2 classes) | Advanced topics | |
| 5/10 (9-11:30am) | Final exam |