See links below for each class meeting's slides, video, code, etc. Materials except videos are in a public Google Drive folder, which you can navigate to for easier bulk-download. Videos will be made available separately, and accessible only to course participants.
Lecture slides/code/topics do not always align perfectly with class periods -- class and videos may be ahead or behind.
Wed, Sep 29 - Lecture 01 : Welcome! Intro to OCaml (slides, video, code)
Thu, Sep 30 - Section 01 : REPL, OCaml, Debugging (slides, code)
Fri, Oct 1 - Lecture 02 : Syntax and Semantics: Expressions, Functions (slides, video, code)
Mon, Oct 4 - Lecture 03 : Tuples, Lists (slides, video, code)
Wed, Oct 6 - Lecture 04 : Let Expressions, Options, Benefits of No Mutation (slides, video, code)
Thu, Oct 7 - Section 02 : Type Synonyms, More General Types, Pattern Matching (slides, worksheet, code)
Fri, Oct 8 - Lecture 05 : Records, Variants, Match Expressions (slides, video, code)
Mon, Oct 11 - Lecture 06 : More Pattern-Matching (slides, video, code)
Wed, Oct 13 - Lecture 07 : Nested Patterns, Tail Recursion, Exceptions (slides, video, code)
Fri, Oct 15 - wrapping up Lecture 07 (video)
Mon, Oct 18 - Lecture 08 : First-Class Functions (slides, video, code)
Wed, Oct 20 - Lecture 09 : Lexical Scope and Function Closures (slides, video, code)
Thu, Oct 21 - Section 04 : Using Map and Filter, Currying, Mutual Recursion (slides, worksheet, code)
Fri, Oct 22 - Lecture 10 : Function-Closure Idioms (slides, video, code)
Mon, Oct 25 - Lecture 11: OCaml Modules (slides, video, code)
Wed, Oct 27 - wrapping up Lecture 11 (video)
Thu, Oct 28 - Section 05 : Midterm Quiz review (slides, old exams)
Fri, Oct 29 - Lecture 12: Type Inference (slides, video, code)
Mon, Nov 1 - Lecture 13: Equivalence (slides, video)
Wed, Nov 3 - Lecture 15: Racket Introduction (slides, video, code)
Thu, Nov 4 - Section 06 : Variables, Scope, Pairs, Mutation (slides, code)
Fri, Nov 5 - Lecture 17: Thunks, Promises, Streams (slides, video, code)
Wed, Nov 10 - Lecture 14: Course Motivation (slides, video)
Thu, Nov 11 - Veteran's Day -- No section meeting
Fri, Nov 12 - Lecture 19: One-Of Types with Lists or Structs (slides, video, code)
Mon, Nov 15 - Lecture 20: Implementing Programming Languages (slides, video, code)
Wed, Nov 17 - Lecture 21: Static vs. Dynamic Typing (slides, video, code)
Thu, Nov 18 - Section 07: Interpreters, Quote/Eval (slides, worksheet, worksheet-key, code)
Fri, Nov 19 - wrapping up Lecture 21 and Section 07 (new code)
Mon, Nov 22 - Unnumbered Lecture on Untyped Lambda Calculus (slides (PDF), slides (Keynote), video, code, REPL implementation)
Mon, Nov 29 - Lecture 22: Introduction to Racket OOP (slides, video, code)
Wed, Dec 1 - Lecture 23: Subclassing, Overriding, Dynamic Dispatch (slides, video, code)
Thu, Dec 2 - Section 08: More Racket OOP: Scope, Augmentation (slides, code, solutions)
Fri, Dec 3 - Lecture 24: Multiple Inheritance, Mixins, Interfaces, Abstract Methods (slides, video, code)
Mon, Dec 6 - Lecture 25: FP vs. OOP Decomposition; Double Dispatch (slides, video, code)
Wed, Dec 8 - Lecture 26: Subtyping and Lecture 27: Subtyping for OOP, Generics vs. Subtyping (slides1, slides2, video)
Thu, Dec 9 - Section 09: Double Dispatch; Final Quiz review (slides, code, old exams)
Fri, Dec 10 - Lecture 28: Manual Dynamic Dispatch, Manual Closures, Course Victory Lap (slides, video, code)