August | 23 |
Introduction (1) | 1. Interpreter (1) | ||
30 |
Lexical analysis (2) |
2. Scanner (2) | Setting up your account | ||
September | 6 |
No PSO's Monday (Labor Day) Lexical analysis (2) |
3. Parser (3,4) | MiniJava scanning | |
13 |
Parsing (3) | JavaCC |
|||
20 |
Parsing (3) | MiniJava syntax | |||
27 |
No Lecture Thursday (Sept 30) Abstract syntax (4) |
4. Semantics (5) | MiniJava trees |
||
October | 4 |
Semantic analysis (5) |
MiniJava type-checking |
||
11 |
No class Tuesday (October Break) No PSOs (October Break) Activation records (6) |
||||
18 |
MIDTERM: Oct 20, 7-9PM, EE 170 Translation to intermediate code (7) |
Stack frames |
|||
25 |
Drop Date (Oct 27) Basic blocks and traces (8) |
5. Translation (7) | |||
November | 1 |
Instruction selection (9) | Intermediate code | ||
8 |
Liveness analysis (10) | ||||
15 |
Register allocation (11) |
6. Instruction selection (9) |
Assembly instructions |
||
22 |
No Lecture Thursday (Thanksgiving Break) Putting it all together (12) |
Instruction selection |
|||
29 |
Advanced topics | ||||
December | 6 |
Course review | |||
13 |
Exam week |
Midterm Exam | 20% |
Final Exam | 25% |
Homework Assignments | 5% |
Programming Projects | 50% |
Note: This course is designed to encompass both theoretical and practical aspects of compilers. Students must pass both the written component of the course (exams, homework), and the practical component of the course (the projects) in order to earn a passing grade overall.
I reserve the right to adjust this weighting at any time.