| Week | Day | Topics | Readings | Homework |
|---|---|---|---|---|
| Dec. 1-5 | 1 | Course Introduction
Introduction to Racket, the programming language we will be using | 23:59: Assignment 0 | |
| 2 | Programming paradigms
Racket: Procedures, Procedure Application, Procedure Composition and Procedure Definition | Syllabus,
TSPL: Chpt 1, 2.1-2.2 | 23:59: Assignment 1 | |
| 3 | Code reuse through abstraction
Procedures as arguments Deep recursion | TSPL: 2.2-2.8, EOPL-1: pp.2-29 | 23:59: Assignment 2 | |
| 4 | Local variables through let
Equivalence of let and a lambda-application Parameter lists | TSPL: 3.2, 4.1-4.4, 6.1-6.4, EOPL-1: pp.67-74 | 23:59: Assignment 3 | |
| Dec. 8-12 | 5 | Scope and Shadowing
map and apply Currying | TSPL: 5.1-5.4, EOPL Forword & Preface | 23:59: Assignment 4 |
| 6 | Returning functions
Practice writing procedure generators | EOPL: 1.1 | 23:59: Assignment 5 | |
| 7 | BNF Grammar Specification
Assignment statements More sequencing in Scheme Short circuiting Side effects Exam 1 specifications | EOPL: 1.2, Reread TSPL: 4.1-4.4 | 23:59: Assignment 6a (problems 1-7) | |
| 8 | Abstracting list recursion
"Follow the Grammar" | EOPL: 1.2.2-1.2.4 | 23:59: Assignment 6b (problems 8-11) | |
| Dec. 15-19 | 9 | Software development by Problem reduction
A new and improved version of snlist-recur | EoPL: 2.1 | 23:59: Assignment 7a (problems 1-3) |
| 10 | Object-oriented programming in Racket | EoPL: 1.3, 1.4, TSPL: 2.9, 3.5, (skip define-syntax) | Evening exam, 7-9:30pm in O267/9 | |
| 11 | Free and Bound Variables
Lexical addressing | EoPL: 2.2 | 23:59: Assignment 7b (problems 4-6) | |
| 12 | No class today, to compensate for evening exam. | |||
| Jan. 5-9 | 13 | Abstract datatypes
Datatypes in Scheme | EOPL 2.3 | |
| 14 | Language translation
Parsing Abstract syntax | EOPL 2.4 | 23:59: Assignment 8 | |
| 15 | Extending the parser
Y-combinator | 23:59: Assignment 9 | ||
| 16 | Environments | EOPL 2.5 | 23:59: Assignment 10 | |
| Jan. 12-16 | 17 | Closures
Environment and closures | EOPL 3.1, 3.2 | |
| 18 | More practice with environments and closures
Inklings of an interpreter | 23:59: Assignment 11 | ||
| 19 | Primitives
Improvements of the code | EOPL 3.3, 3.4 | ||
| 20 | Extending a language
Macros | EOPL 3.5, 3.6, skim 6.2, 6.3 | ||
| Jan. 19-23 | 21 | No class, Institute Holiday | ||
| 22 | Extending the syntax of a language | EOPL 4.1-4.3 | 23:59: Assignment 13 | |
| 23 | Global environments | EOPL 5.1, 5.2 | ||
| 24 | Variable assignment | 23:59: Macros assignment | ||
| Jan. 26-30 | 25 | Adding letrec to the interpreter | TSPL 3.3, 3.4 | 23:59: Syntax-expand assignment |
| 26 | Alternate way of implementing letrec | TSPL 12.11 | Exam 2: 7-9:30pm in O267/9 | |
| 27 | Hyper-efficient evaluation of recursive procesured: accumulating procedures
In-depth study of the procedures built up | |||
| 28 | No class, to compensate for evening exam | |||
| Feb. 2-6 | 29 | Justification of Continuation Passing Style
Practice of converting to cps | ||
| 30 | Tail form
Practice of converting to cps | |||
| 31 | Algorithm for converting to CPS
Datatyped continuations | 23:59: Recursive interpreter | ||
| 32 | Continuation passing style interpreter:
Basic set-up and if-expressions | |||
| Feb. 9-13 | 33 | Continuation passing style interpreter:
Lambda expressions Application expressions | ||
| 34 | Continuation passing style interpreter:
Study of app exps Continuations: Storing the state of a computation | 23:59: Converting to datatyped CPS assignment | ||
| 35 | Practice with call/cc | |||
| 36 | Time travelling continuations | BC: call/cc written homework | ||
| Feb. 16-20 | 37 | Typing | 23:59: CPS Interpreter - part 1 | |
| 38 | Typing
Interpreter: Tying up loose ends: exit, errors | |||
| 39 | Review for the final
call/cc, letrec | |||
| 40 | Final prep | 23:59: Typing
Extra Credit: CPS Interpreter - part 2 Negotiable: Extra credit |