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: Type Systems and Closure Conversion

  • Monday: Type Systems
  • Wednesday: Closure Conversion: Top-Down and Bottom-Up

Week 13: Class wrap-up

  • Monday: Implementation details—garbage collection, etc..
  • Wednesday: Logic programming. It’s a slog.