Course Information

Time and place

Monday and Wednesday, 4:30pm - 5:45pm in Halligan 102


Piazza discussion page


Code generation

X64 instruction reference


Tiger language specification


Very concise ML Reference
A Gentle Introduction to ML
ML-Lex Documentation
A slightly more user-friendly reference for ML-Lex/ML-Yacc


[PDF] Knuth's original LR parsing paper. Not only does this seminal paper describe the LR algorithm, it also introduces many of key ideas and terms in the field.

Lecture Notes

These notes are from a few years ago, but still useful. I no longer use PowerPoint for lectures, but the slides make a useful resource.

Top-down parsing
Bottom-up parsin
Static checking
Type checking
Syntax-directed translation
Register allocation
Instruction selection

News and Important Dates



Pair programming

For the compiler programming projects we will do pair programming, much the same as you have done in comp40 and comp105.


Your grade in this course will be based on a series of programming assignments and on your class participation. My goal is to spend a substantial amount of lecture time doing in-class problems, so class participation is very important.

80% Assignments
20% Class participation

Academic (mis)conduct

Academic misconduct (also known as "cheating") is a very serious issue at Tufts. As a member of the University community, I am obligated to report any incidents. The consequences are painful for everyone involved. For more details, see the Tufts brochure on academic conduct:

The most common reason for cheating is becoming overwhelmed by the work. Every one of us has been in this situation, and we're more than willing to help you if you feel like you're in trouble. Please, please come to us before you get into a situation where you're tempted to take someone elses solution.