Fall 2004 Course Syllabus

Textbook: Modern Compiler Implementation in Java, (second edition),
by Andrew W. Appel with Jens Palsberg.

This schedule is approximate, and may be revised at any time.
Relevant chapters from the text are noted in parentheses.
Week beginning
Lectures
Project
Homework
P/S/O
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


Final Grades

Final grades will be assigned according to the following approximate weighting:
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.


Back