Princeton University
Computer Science Dept.

Computer Science 320
Compiling Techniques

Lennart Beringer

Schedule and Readings

Spring 2016


Schedule (approximate)

TopicReading
Monday, Feb 2
Introduction; ML language Ullman 1-3, Appel 1
Regular expressions and finite automata Appel 2.1, 2.2, 2.3, 2.4
ML-Lex Appel 2.5, ML-Lex manual
More on ML Ullman 4-9
Monday, Feb 9
Context-free grammars Appel 3.1
Parsing Appel 3.2,3.3
ML-Yacc Appel 3.4; ML-Yacc manual
LL parser generation Appel 3.2
Monday, Feb 15 Assignment 1 due: interpreter
LR parser generation Appel 3.3
Parser error recovery Appel 3.5
Fun language; abstract syntax Appel 4; FUN language definition
Monday, Feb 22 Assignment 2 due: lexer
Symbol tables, declarations, type checking Appel 5
Type checking II, subtyping
Stack frames Appel 6
Monday, Feb 29
Intermediate Representations Appel 7
Canonical Trees Appel 8
Monday, March 7 Assignment 3 due: parser
Instruction selection Appel 9
TBCMidterm Exam (in-class, Thursday, March 10)
Monday, March 14
Spring Recess
Monday, March 21
Control Flow Analysis Appel 18.1
Liveness analysis Appel 10
Dataflow analysis 1 Appel 17
Monday, March 28 Assignment 4 due: type checker
Dataflow analysis 2 Appel 17
Garbage collection Appel 13
Monday, April 4 Assignment 5 due: MIPS/SPIM
Loop Optimizations Appel 18
Register Allocation Appel 11
Monday, April 11 Assignment 6 due: code generation
Instruction Scheduling
Monday, April 18 Assignment 7 due: liveness analysis
Static Single Assignment Form Appel 19
Monday, April 25 Assignment 8 due: graph coloring
Monday, May 2 Assignment 9 due: spilling, complete compiler
TBCFINAL EXAM

Back to COS 320 front page