The following represents the currently anticipated (and most ambitious) schedule. The schedule will be updated as the course evolves to reflect the actual pacing.

  • Week 0
  • Lecture 0 - Course Intro
  • Lecture 1 - Introduction to Racket: Basics and Lists
  • Assignment 0 handed out (Intro to Racket)

  • Week 1
  • Assignment 0 DUE
  • Lecture 2 - Recursive Structures
  • Lecture 3 - Recursive Structures contd. / Intro to PageRank
  • Assignment 1 handed out (PageRank in Racket)
  • Week 2
  • Lecture 4 - Higher-order functions and intro execution order
  • Lecture 5 - Execution Order and the Stack
  • Week 3
  • Assignment 1 DUE
  • Lecture 6 - Programming with Hashes and Folds
  • Lecture 7 - Racket Lambdas and Functions
  • Exercises 2/3 handed out (rectangle exercises)

  • Week 4
  • Lecture 8 - Assignment 2 Intro, Okasaki-style Immutable Queues
  • Lecture 9 - Lambda Calculus, method one: textual-reduction semantics
  • Assignment 2 handed out (QuadTrees for inclusion/exclusion)
    • Quadtrees slides in Keynote and PDF.
    • Yihao’s slides on QuadTrees in PDF.
  • Week 5
  • Lecture 10 - Lambda Calculus, Big-Step Semantics (CE), Intro to Asn 3.
  • Lecture 11 - Lambda Calculus via Metacircular interpreter
  • Assignment 3 handed out (Closure-creating interpreter)

  • Week 6
  • Monday: Assignment 2 DUE
  • Lecture 12 - Metacircular interpreter exercise and CODING EXAM 0 (worth 5%)
  • Lecture 13 - Church-encoding and Intro Asn 4.

  • Week 7
  • Assignment 3 DUE
  • Lecture 14 - Control and Continuations
  • Lecture 15 - Small-step semantics (CEK)
  • Assignment 4 handed out (Church encoder)

  • Week 8
  • Lecture 16 - ANF and CPS
  • Lecture 17 - (March 12) MIDTERM (worth 12%)

  • Week 9 — Spring break
  • Assignment 4 DUE

  • Week 10
  • Assignment 5 handed out (CEK-style interpreter for call/cc)
  • Lecture 18 - Top-down parsing via statepassing: livecoding
  • Lecture 19 - Big-step (metacircular) CES semantics

  • Week 11
  • Assignment 5 DUE
  • Lecture 20 - Simply-Typed Lambda Calculus
  • Lecture 21 - Type inference for let-bound polylmorphism

  • Week 12
  • Assignment 6 handed out (CES-style interpreter for set!)
  • Lecture 22 - Hygienic Macros 1
  • Lecture 24 - Hygienic Macros 1

  • Week 13
  • Assignment 6 DUE
  • Lecture 25 - Exercise and CODING EXAM 1 (worth 5%)
  • Lecture 26 - MiniKanren 1
  • Assignment 7 handed out (MiniKanren)

  • Week 14
  • Lecture 27 - MiniKanren 2
  • Lecture 28 - MiniKanren 3
  • Assignment 5 DUE (last day of class)

  • Week 15
  • Lecture 29 - Course wrap-up / review

  • Finals
  • Final (worth 20%)