Harvard University, FAS

Home
Syllabus
Lecture Notes

ML Resources
MIPS and SPIM

Computer Science 153
Principles of Programming Language Compilation

There will be 9 projects a mid-term, and a comprehensive final. Your project grade makes up a total of 80% of your grade and the exams are worth 10% each:

Mid-Term (Fri. 30 Oct) 10%
Final TBA 10%
Projects 80%

An old midterm exam from the Fall of 2006.
An old final exam from the Fall of 2004.


This is the expected outline for the course.

  • Overview and Intro to SML
  • Simple Control Flow
  • Global Variables
  • Parsing Combinators
  • Lexical Analysis
  • Parsing and Abstract Syntax
  • First-order Procedures
  • Data Types
  • Closures
  • Type Checking
  • Type Inference
  • Garbage Collection
  • Objects and Classes
  • Algebraic Optimization
  • Control-Flow Graphs
  • Dataflow Analysis
  • Register Allocation
  • More Analysis and Optimization
  • Instruction Selection
  • Cool Topics: ???


The projects and tentative due dates are as follows. (Dates are subject to change.)

Fri. 18 Sep Project 1: SML Warmup 6 points
Fri. 2 Oct Project 2: A Fortran-ish Front End 8 points
Fri. 9 Oct Project 3: A Fortran-ish Back End 8 points
Mon. 19 Oct Project 4: A C-ish Back End 8 points
Mon. 26 Oct Project 5: From Scheme-ish to C-ish 8 points
Wed. Nov 4 Project 6: From ML-ish to Scheme-ish 8 points
Wed. Nov 11 Project 7: Algebraic Optimization 8 points
Wed. Nov 18 Project 8: Liveness Analysis 10 points
Wed. Dec 2 Project 9: Register Allocation 10 points

Students may work with a partner on the projects (except for Project 1) (and I encourage this because there's a lot of coding here!)

There will also be ample opportunity for extra credit by augmenting your compiler (or that language we're compiling) with new features or optimizations. However, a word of warning: the extra credit only applies if the rest of the compiler is working.

If you turn in a project component late, then points will be deducted; you will lose one point per day for late projects.