Project-related deadlines are shown in red. Note that that there will be no extensions for projects!
Week 1: Intro and C++
- Required Video Lecture – Introduction to C++
- Monday (1/22): No class (MLK day)
- Tuesday (1/23): No labs this week (watch video instead!)
- Wednesday (1/25): Intro and Beginning C++
- Projects and homework:
Week 2: C++ Pointers (Kris gone)
- Monday: No class, watch video instead.
- Tuesday: No labs (Kris gone)
- Wednesday: Memory Management in C++
- Projects and homework:
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
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
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
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.