Lecture + Section
Unit 1 : OCaml Functions, Tuples, Lists, and More
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)
Unit 2 : Records, Variants, Pattern Matching, Tail Recursion
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)
Unit 3 : First-class Functions, Closures, Idioms, Modules
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)
Unit 4 : Racket, Delaying Evaluation, Memoization, Macros
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)
Unit 5 : Implementing Languages
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)
Interlude: Why CSE 341? Static vs. Dynamic Typing
Mon, Mar 01 - π§βπ« Lecture 18 : Course Motivation and Static vs. Dynamic Typing (video)
Unit 6 : OOP in Racket
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)