See links below for each class meeting's slides, video, code, etc. and the corresponding reading notes for each unit. For easier bulk access, you can also go to:
For student-privacy reasons, videos are available only to students in the class.
For in-person meetings, the video links go directly to the Panopto recordings.
For remote meetings, the video links go to mp4 downloads of the Zoom recordings, but the Zoom recordings (with chat, search, etc.) will be available via links posted in Canvas and/or the discussion board.
Lecture slides/code/topics do not always align perfectly with class periods -- class and videos may be ahead or behind.
Mon, Jan 3 - Lecture 01 : Welcome! Intro to OCaml (slides, video, code)
Wed, Jan 5 - Lecture 02 : Syntax and Semantics: Expressions, Functions (slides, video, code)
Thu, Jan 6 - Section 01 : REPL, OCaml, Debugging (AB-slides, AB-video, AC-slides, AD-slides, code [all sections])
Fri, Jan 7 - Lecture 03 : Tuples, Lists (slides, video, code)
Mon, Jan 10 - Lecture 04 : Let Expressions, Options, Benefits of No Mutation (slides, video, code)
Wed, Jan 12 - Lecture 05 : Records, Variants, Match Expressions (slides, video, code)
Thu, Jan 13 - Section 02 : Type Synonyms, More General Types, Pattern Matching (slides, AB-video, AC-video, worksheet, code)
Fri, Jan 14 - Lecture 06 : More Pattern-Matching (slides, video, code)
Wed, Jan 19 - Lecture 07 : Nested Patterns, Tail Recursion, Exceptions (slides, video, code)
Thu, Jan 20 - Section 03: Exceptions (moved from lecture), Tail Recursion, Using Map and Filter (a unit 3 topic) (slides, AB-video, AC-video, AD-video, code)
A few minutes of Wed Jan 19 "jumped ahead" to the first part of Unit 3 because of the timing of Section 3 and then we wrapped up Unit 2 on Fri Jan 21 before fully launching Unit 3.
Fri, Jan 21 - Lecture 08: First-Class Functions (slides, video, code)
Mon, Jan 24 - Lecture 09: Lexical Scope and Function Closures (slides, video, code)
Wed, Jan 26 / Fri Jan 28 - Lecture 10: Function-Closure Idioms (slides, video-jan26*, video-jan28*, video-optional-adt-idiom, code)
Thu, Jan 27 - Section 04: Mutual Recursion, Currying, OCaml Modules (slides, AB-video, code, worksheet, worksheet-key)
*The first half of Lecture 10 is in the first half of January 26 and the second half is in the second half of January 28 and beginning of January 31, with Lecture 11 from Unit 4 in-between. This is to align with Section 4. Section 4 covers topics in both Unit 3 and Unit 4.
Wed, Jan 26 / Fri Jan 28 - Lecture 11: OCaml Modules (slides, video-jan26*, video-jan28*, code)
Mon, Jan 31 - Lecture 12: Type Inference (slides, video, code)
*The first half of Lecture 11 is in the second half of January 26 and the second half is in the first half of January 28, with Lecture 11 from Unit 4 in-between. This is to align with Section 4. Section 4 covers topics in both Unit 3 and Unit 4.
Thu, Feb 3 - Section 05: Review Session (slides)
Mon, Feb 7 - Lecture 15: Racket Introduction (slides, video, code)
Wed, Feb 9 - Lecture 16: Variables, Scope, Pairs, Mutation (slides, video, code)
Thu, Feb 10 - Section 06: Mutable Pairs, When Expressions Evaluate, Memoization (slides, code)
Fri, Feb 11 - Lecture 17: Thunks, Promises, Streams (slides, video, code)
Wed, Feb 16 - Lecture 19: One-Of Types with Lists or Structs (slides, video, code)
Thu, Feb 17 - Section 07: Interpreters, Quote/Eval (slides, worksheet, worksheet-key, code, section-AB-video)
Fri, Feb 18 - Lecture 20: Implementing Programming Languages (slides, video, code) For unknown reasons, the video has no sound. :( This video from the Spring 2021 course offering has sound and covers similar material.
[moved to later in course: Fri, Mar 4] Lecture 21: Static vs. Dynamic Typing (slides, video, code)
Note: Reading notes for this unit are not available. Some of the material is covered in
The Racket Guide Chapter on Classes and Objects
Wed, Feb 23 - Lecture 22: Introduction to Racket OOP (slides, video, code)
Thu, Feb 24 - Section 08: More Racket OOP: Scope, Augmentation (code, slides, section-AB-video)
Fri, Feb 25 - Lecture 23: Subclassing, Overriding, Dynamic Dispatch (slides, video, code)
Mon, Feb 28 - Lecture 24: Multiple Inheritance, Mixins, Interfaces, Abstract Methods (slides, video, code)
Note: Reading notes for this unit are not available. Making them is on the instructor's to-do list.
Wed, Mar 2 - Lecture 25: FP vs. OOP Decomposition; Double Dispatch (slides, video, code)
Thu, Mar 3 - Section 09: Double Dispatch; The Visitor Pattern (slides, starter code, solved code, section-AB-video)
[Fri, Mar 4 and the first part of Mon, Mar 7 we return to Unit 6 for Static vs. Dynamic Typing]
Thu, Mar 10 - Section 10: Final-Exam Review (slides, section-AB-video)
Fri, Mar 11 - Lecture 28: Manual Dynamic Dispatch, Manual Closures, Course Victory Lap (slides, video, code)