Lecture & Section
Unit 1 : OCaml Functions, Tuples, Lists, and More
Wed, Sep 28 - π§βπ« Lecture 01 : Welcome! Intro to OCaml (code)
Thu, Sep 29 - π§βπ» Section 01 : REPL, OCaml, Debugging (code)
Fri, Sep 30 - π§βπ« Lecture 02 : Syntax and Semantics, Expressions, Functions (code)
Mon, Oct 03 - π§βπ« Lecture 03 : Tuples, Lists (code)
Wed, Oct 05 - π§βπ« Lecture 04 : Local Bindings, Options, Avoiding Mutation (code)
Unit 2 : Variants, Pattern Matching, Tail Recursion, and More
Thu, Oct 06 - π§βπ» Section 02 : Type Synonyms, More General Types, Pattern Matching (code)
Fri, Oct 07 - π§βπ« Lecture 05 : Records, Variants, Match Expressions (code)
Mon, Oct 10 - π§βπ« Lecture 06 : More Pattern Matching (code)
Wed, Oct 12 - π§βπ« Lecture 07 : Nested Patterns, Tail Recursion, Exceptions (code)
Thu, Oct 13 - π§βπ» Section 03 : Exceptions, Tail Recursion, Map and Filter (code)
Unit 3 : First-Class Functions and Closures
Fri, Oct 14 - π§βπ« Lecture 08 : First-Class Functions (code)
Mon, Oct 17 - π§βπ« Lecture 09 : Lexical Scope and Function Closures (code)
Wed, Oct 19 - π§βπ« Lecture 10 : Function-Closure Idioms (code)
Thu, Oct 20 - π§βπ» Section 04 : Mutual Recursion, Currying, Module System (code)
Unit 4 : ML Modules, Type Inference, and Equivalence
Fri, Oct 21 - π§βπ« Lecture 11 : OCaml Modules (code)
Mon, Oct 24 - π§βπ« Lecture 12 : Type Inference (code)
Wed, Oct 26 - π§βπ« Lecture 13 : Equivalence
Thu, Oct 27 - π§βπ» Section 05 : Midterm Review
Unit 5 : Racket Introduction, Delaying Evaluation, Macros
Mon, Oct 31 - π§βπ« Lecture 14 : Racket Introduction (code)
Wed, Nov 02 - π§βπ« Lecture 15 : Racket Variables, Scope, Pairs, Mutation (code)
Thu, Nov 03 - π§βπ» Section 06 : Lexical Scope, Assoc Lists, Memos, Mutable Pairs (code)
Fri, Nov 04 - π§βπ« Lecture 16 : Thunks, Promises, Streams, Memoization (code)
Unit 6 : Structs, Interpreters, Static vs. Dynamic Typing
Wed, Nov 09 - π§βπ« Lecture 18 : One-Of Types with Lists or Structs (code)
Thu, Nov 10 - π§βπ» Section 07 : Interpreting LBI, Macros, Quote, and Eval (code)
Mon, Nov 14 - π§βπ« Lecture 19 : Implementing Programming Languages (code)
Unit 7 : Racket-Style Object-Oriented Programming
Wed, Nov 16 - π§βπ« Lecture 20 : Introduction to Racket Object-Oriented Programming (code)
Thu, Nov 17 - π§βπ» Section 08 : Racket OOP: Scope, Augmentation (code)
Fri, Nov 18 - π§βπ« Lecture 21 : Subclassing, Overriding, Dynamic Dispatch (code)
Mon, Nov 21 - π§βπ« Lecture 22 : Multiple Inheritance, Mixins, Interfaces, Abstract Methods (code)
Unit 8 : OOP Program Decomposition, Subtyping, and More
Wed, Nov 23 - π§βπ« Lecture 23 : FP vs. OOP Decomposition; Double Dispatch (code)
Mon, Nov 28 - π§βπ« Lecture 24 : Static vs. Dynamic Typing (code)
Thu, Dec 01 - π§βπ« Section 09 : Double Dispatch, Visitor Pattern (code)
Fri, Dec 02 - π§βπ« Lecture 26 : Subtyping for OOP; Generics vs. Subtyping(code)
Final Review
Thu, Dec 08 - π§βπ« Section 10 : Final-Exam Review (past exams and their key)