Project-related deadlines are shown in red. Note that that there will be no extensions for projects!

Week 1: Intro and C++

Week 2: C++ Pointers (Kris gone)

Week 3: C++ Classes, Inheritance, and VTables

  • Monday: Memory management and polymorphism
  • Wednesday: Virtual method tables
  • Slides in Keynote and PDF.

Week 4: Assembly Lanaguage

  • Monday: Assembly Language Intro
  • Wednesday: Kris gone
  • Slides in Keynote and PDF.

Week 5: Calling Conventions in Assembly, Stack Smashing

  • Monday: Functions and Calling Conventions
  • Wednesday: Haverford Snow Day
  • See updated slides on assembly

Week 6: Intro to Racket

  • Monday: Intro to Racket
  • Wednesday: No class

Spring break

Week 7: More Racket, Exam Review

  • Monday: Exam Review and More Racket
  • Wednesday: Midterm 1

Week 8: Advanced Racket and Lambda Calculus

  • Monday: Advanced Racket
  • Wednesday: QuasiPatterns and Lambda Calculus

Week 9: Reduction Strategies, Abstract Machines, and Church Encoding

  • Monday: Reduction Strategies and Abstract Machines
  • Wednesday: Church Encoding for the Lambda Calculus

Week 10: Continuations and Interpreter Implementation

  • Monday: Continuations and call/cc
  • Wednesday: Continuation-Passing Style and CPS Conversion

Week 11: CPS conversion contd. and Closure Conversin

  • Monday: CPS conversion contd. Exam review
  • Wednesday: Midterm 2

Week 12: Closure Conversion

  • Monday: Closure Conversion–top down and bottom up
  • Wednesday: Closure Conversion contd.

Week 13: Compiling to C

  • Monday: Finishing up the compilation
  • Wednesday: Garbage collection, class wrap-up