Mon, Jan 04 - 🧑🏫 Lecture 01 : Welcome! Intro to OCaml (video, code)
Wed, Jan 06 - 🧑🏫 Lecture 02 : Syntax and Semantics: Variable Bindings, Expressions (video, code)
Thu, Jan 07 - 🧑💻 Section 01 : REPL, OCaml, Debugging (code)
Fri, Jan 08 - 🧑🏫 Lecture 03 : Function Bindings, Tuples (video, code)
Mon, Jan 11 - 🧑🏫 Lecture 04 : Lists, Lets, Options (video, code)
Wed, Jan 13 - 🧑🏫 Lecture 04 : Lists, Lets, Options (continued: video, code)
Thu, Jan 14 - 🧑💻 Section 02 : Type Synonyms, Records, Variants, Type Generality (worksheet, code, test_code)
Fri, Jan 15 - 🧑🏫 Lecture 05 : Records, Variants, Pattern Matching (video, code)
Mon, Jan 18 - Holiday (no lecture)
Wed, Jan 20 - 🧑🏫 Lecture 05 : Records, Variants, Pattern Matching (continued: video, code)
Thu, Jan 21 - 🧑💻 Section 03 :Pattern Matching, Tail Recursion (worksheet, code)
Fri, Jan 22 - 🧑🏫 Lecture 06 : Let Patterns, Tail Recursion, Exceptions (video, code)
Mon, Jan 25 - 🧑🏫 Lecture 06 : Let Patterns, Tail Recursion, Exceptions (continued: video, code)
Wed, Jan 27 - 🧑🏫 Lecture 07 : First-class + Higher-order Functions (video, code)
Thu, Jan 28 - 🧑💻 Section 04 : Anonymous Functions, Higher-Order Functions (worksheet, key, reference sheet)
Fri, Jan 29 - 🧑🏫 Lecture 08 : Lexical Scope, Closures, Currying (video, code)
Mon, Feb 01 - 🧑🏫 Lecture 09 : Closure Idioms (video, code)
Wed, Feb 03 - 🧑🏫 Lecture 10 : Modules (video, code)
Thu, Feb 04 - 🧑💻 Section 05 : Currying, Modules (worksheet, key)
Fri, Feb 05 - 🧑🏫 Lecture 11 : References, Recursion Without Rec (video, code)
Mon, Feb 08 - 🧑🏫 Lecture 12 : Racket Intro (video, code)
Wed, Feb 10 - 🧑🏫 Lecture 13 : Racket Local Bindings, Pairs, Mutation (video, code)
Thu, Feb 11 - 🧑💻 Section 06 : Racket vs OCaml, lists, thunks, streams (worksheet, key)
Fri, Feb 12 - 🧑🏫 Lecture 13 : Racket Local Bindings, Pairs, Mutation (continued: video, code)
Mon, Feb 15 - Holiday (no lecture)
Wed, Feb 17 - 🧑🏫 Lecture 14 : Thunks, Promises, Streams (video, code)
Thu, Feb 18 - 🧑💻 Section 07 : Streams, Macros (worksheet, key)
Fri, Feb 19 - 🧑🏫 Lecture 14 : Thunks, Promises, Streams (continued: video, code)
Mon, Feb 22 - 🧑🏫 Lecture 16 : Simulating Variants in Racket (video, code)
Wed, Feb 24 - 🧑🏫 Lecture 17 : Implementing Programming Languages (video, code)
Thu, Feb 25 - 🧑💻 Section 08 : Macros and Language Interpretation (worksheet, starter_code, key, code)
Fri, Feb 26 - 🧑🏫 Lecture 17 : Implementing Programming Languages (continued: video, code)
Mon, Mar 01 - 🧑🏫 Lecture 18 : Course Motivation and Static vs. Dynamic Typing (video)
Wed, Mar 03 - 🧑🏫 Lecture 19 : Racket OOP (video, code)
Thu, Mar 04 - 🧑💻 Section 09 : OOP in Racket (starter_code, filled_out_code)
Fri, Mar 05 - 🧑🏫 Lecture 19 : Racket OOP (continued: video, code)
Mon, Mar 08 - 🧑🏫 Lecture 20 : Dynamic Dispatch (video, code)
Wed, Mar 10 - 🧑🏫 Lecture 20 : Dynamic Dispatch (continued: video, code)
Thu, Mar 11 - 🧑💻 Section 10 : Double Dispatch & Subtyping (code)
Fri, Mar 12 - 🧑🏫 Lecture 21 : FP vs. OOP for the Expression Problem + Victory Lap (video, code)