CSSE 304 Schedule

The schedule is subject to change.

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