Schedule

March
MondayTuesdayWednesdayThursdayFriday
28
12:30-13:20 Lecture
CSE2 G01
Welcome to 341! Course mechanics; Trefoil v1 use and implementation
Whiteboards
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
29
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
30
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
OCaml intro: top-level variables, functions, recursion
Demo code
Video
31
Section
OCaml setup, REPL, debugging
Slides
Code
Video (from a previous quarter)
15:30-16:30 OH (Cole)
CSE1 220
01
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
More OCaml intro: let expressions, lists, tuples, and options
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
April
MondayTuesdayWednesdayThursdayFriday
04
12:30-13:20 Lecture
CSE2 G01
OCaml wrapup; flat syntax versus nested syntax; syntax as trees
Whiteboards
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
05
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
23:59 HW1 due (Implementing Trefoil v1: Postfix calculator)
06
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
ASTs; the dynamic environment; evaluation; careful description of OCaml; S-expresions; tokenization; two-stage parsing
Whiteboards
Video
07
Section
Testing and debugging Trefoil v1
Slides
Code
15:30-16:30 OH (Cole)
CSE1 220
08
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Using Trefoil v2: old ideas in new clothes; Implementing Trefoil v2: ASTs in Java; careful description of Trefoil v2; implementing the dynamic envornment
Whiteboards
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
23:59 HW2 due PDF handout; starter code (OCaml intro)
11
12:30-13:20 Lecture
CSE2 G01
Trefoil v2: phases of errors, let expressions, untyped pairs, functions; OCaml: records
Whiteboards
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
12
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
13
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
Trefoil: test bindings, implementing functions; OCaml: variants
Video
Demo code
14
Section
Type Synonyms, More General Types, Pattern Matching
Slides and exercises
Code (exercise solutions)
Video (from a previous quarter)
15:30-16:30 OH (Cole)
CSE1 220
15
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Trefoil: implementing recursive functions; OCaml: pattern matching
Whiteboards
Video
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
18
12:30-13:20 Lecture
CSE2 G01
OCaml: more pattern matching and nested patterns
Video
Demo code slash notes
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
19
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
20
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
OCaml: Tail recursion
Video
Demo code
23:59 HW3 due (Implementing Trefoil v2: Expression-oriented programming)
21
Section
Testing and debugging Trefoil v2
Slides
Code and notes
15:30-16:30 OH (Cole)
CSE1 220
22
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
OCaml: tuple patterns in function arguments, exceptions; Trefoil: intro to structs
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
25
12:30-13:20 Lecture
CSE2 G01
Trefoil: structs for variant types, careful description of structs, cond expressions; OCaml: ASTs, dynamic environments, association lists
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
26
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
27
10:20-11:20 OH (Deeksha) (note the end time is 11:20!!)
CSE1 (Allen) 218
12:30-13:20 Lecture
CSE2 G01
Careful description of Trefoil v3 pattern matching
Video
Demo code
23:59 HW4 due PDF handout; starter code (OCaml variants and pattern matching)
28
Section
Canceled due to HW5 delayed release
15:30-16:30 OH (Cole)
CSE1 220
29
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
OCaml: first-class functions: higher-order, polymorphic, and anonymous
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
May
MondayTuesdayWednesdayThursdayFriday
02
12:30-13:20 Lecture
CSE2 G01
Unit, if-without-else, ignore, structural equality; anonymous functions, returning functions, our own higher-order functions
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
03
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
04
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
Lexical scope and closures
Video
Demo code
05
Section
Using map and filter, mutual recursion, currying
Slides
Worksheet
Worksheet Solution
15:30-16:30 OH (Cole)
CSE1 220
06
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Closure idioms
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
09
12:30-13:20 Lecture
CSE2 G01
OCaml: More closure idioms; Mutation
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
10
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
11
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
Trefoil: first-class functions; thunks and streams
Video
Demo code(also we updated the lecture 19 code with more explanation)
23:59 HW5 due (Implementing Trefoil v3: port to OCaml and add structs and pattern matching)
12
15:30-16:30 OH (Cole)
CSE1 220
13
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Trefoil: more streams; understanding streams via closure semantics
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
16
12:30-13:20 Lecture
CSE2 G01
Trefoil: Side effects, References, and Promises
Video
Demo code
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
17
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
18
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
Trefoil: Two new ways to extend the language: by "expanding in the parser" and by representing Trefoil programs as data in Trefoil
Video
Demo code
23:59 HW6 due PDF handout; starter code (OCaml first-class functions)
19
Section
TBD
15:30-16:30 OH (Cole)
CSE1 220
20
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Macros
Whiteboards
Video
Demo code
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
23
15:00-16:00 OH (Deeksha)
CSE1 (Allen) 220
17:30-18:30 OH (Winston)
Zoom
24
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
25
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
The 341 2x2 matrix; Static vs Dynamic typing
Whiteboards
Video
26
Section
TBD
15:30-16:30 OH (Cole)
CSE1 220
27
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Dynamic dispatch precisely; Implementing objects
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
30
Memorial Day
31
10:30-11:30 OH (Chongjiu)
In Person, CSE2 151
13:00-14:00 OH (James)
CSE1 358 or Zoom
01
11:30-12:30 OH (Thia)
CSE1 (Allen) 3rd floor breakout
12:30-13:20 Lecture
CSE2 G01
TBD
02
Section
TBD
15:30-16:30 OH (Cole)
CSE1 220
03
11:00-12:00 OH (Joan)
In Person CSE2 150(Bradlee room)
12:30-13:20 Lecture
CSE2 G01
Victory lap
15:00-16:00 OH (Riya)
Zoom
17:00-18:00 OH (Kevin)
Zoom
23:59 HW7 due (Implementing Trefoil v4: first-class functions; OCaml mutation, thunks, promises, streams)
June
MondayTuesdayWednesdayThursdayFriday
06 07 08
23:59 HW8 due (Bonus HW: objects)
09 10