Course Schedule, Notes & Assignments

Home Details Schedule

horizontal rule

The course schedule is always open to change and revision.  The course will have weekly assignments, due at midnight, usually on Thursdays. 

Many of the lecture notes come from Professor David August, with only minor modifications by myself.  I really appreciate David's help making this a better course.

The overall course project requires that students compile the Fun language.  The definition of Fun is here.

In order to prepare for exams, I recommend doing some exercises from Appel's textbook.  This document contains a list of recommended exercises from the textbook and some additional exercises I have made up myself.  These exercises are completely optional and will not be graded.  Their only purpose is to help you study.  Use them however you choose.  I recommend trying each problem first yourself before asking your friends about how to solve it.

Week Topics Notes Assignments: Due Date
1 (Jan 31) Intro; SML

A Guide to Using SML/NJ

Online SML Book

Appel Chap 1

Course Intro; Intro to SML A1:  A Fun Compiler Intermediate Language

Due February 10

2 (Feb 7) Lexical Analysis; Parsing Intro

Appel Chap 2

Lexing; CFGs+LLparsing A2: Lexical Analysis

Due February 17

3 (Feb 14) Parsing;

Appel Chap 3



A3:  MLYacc Parsing

Due March 1

4 (Feb 21) Parsing;

Type Checking

Appel Chap 4-5

Harper text Chap 9 (not the proofs)

LRparsing & error recovery

Types & Judgements Notes (html format here)

5 (Feb 28) Type Checking

Harper text Chap 26 (not the proofs)

  A4:  Type Checking

Due (Friday) March 11

6 (March 7) Type Inference

Garbage Collection

Appel Chap 13

Type Inference


Break (March 14) Bliss    
7 (March 21) Midterm Mar. 22

Stack Frames

Appel Chap 6.1

  A5: Garbage Collection

Begin: March 24; Due March 31

8 (March 28) Midterm Review & Sample Solutions

Mips & Code Generation

mips and spim; Appel Chap 9.1,9.2

  A6: Code Generation

Begin: March 31; Due April 14

9 (April 4) Code Generation

Liveness Analysis

Appel Chap 10

10 (April 11) Dataflow analysis & optimization

Register Allocation

Appel Chap 17, 11

Dataflow Analysis

Register Allocation

A7: Liveness Analysis & Interference Graph Construction

Begin April 14; Due April 21

11 (April 18) Loop Optimizations

Static Single Assignment

Appel Chap 18.1-18.3, 19.1, 19.3

Loop Opt 1


A8: Register Allocation

Begin April 21;  Due Mon. May 2

12 (April 25) Advanced Language Features

Objects and Threads

Appel Chap 14.1-14.5



Final Exam (May 18, 9AM, CS 102) All topics    

horizontal rule

Mid-term Topics (Tuesday March 22)

The midterm may cover any topic we have discussed in class, any topic that appears in the textbook chapters listed below, or any topic related to your assignments.

bulletProgramming Interpreters
bulletAssignment #1
bulletLexical Analysis 
bulletRegular expressions
bulletAssignment #2
bulletAppel Chap 2, 2.1, 2.2, 2.5
bulletContext-free grammars
bulletTop-down parsing
bulletBottom-up parsing
bulletClassifying grammars:  LL(k), LR(k), SLR, LALR, ambiguous
bulletSemantic actions & generating abstract syntax
bulletError recovery techniques
bulletAssignment #3
bulletAppel Chap 3, 4
bulletType checking
bulletInductive definitions and typing rules
bulletMinML & Fun typing
bulletType checking algorithms
bulletType inference & unification algorithms
bulletAssignment #4
bulletHarper Chap 9, 26 (not the lemmas or proofs)


Back to Top