Schedule

This schedule is tentative and likely to be revised.

Date Topic Slides Code Reading
Week 1 Videos
Recitation materials
Content quiz
1: Introductions, Program Design, and Value-Oriented Programming    
2: Lists, Pattern Matching, and Recursion  
3: Tuples, Nested Patterns, Datatypes, and Trees          
4: Trees and Binary Search Trees      
Sat 5/29
Week 2 Videos
Recitation materials
Content quiz
Memorial Day Observed (no classes)
5: Generics and Higher-order Functions: Transform and Fold      
6: Abstract Types: Sets and  
7: Abstract Types: Finite Maps, Typechecking  
Sat 6/5
Week 3 Videos
Recitation materials
Content quiz
8: Options, Programming with mutable data structures  
9: Mutable Data Structures, Abstract Stack Machine, Reference Equality, and Mutable Queues  
10: Iteration and Tail Recursion  
11: Closures and Objects, Review  
Sat 6/12
Week 4 Videos
Recitation materials
Content quiz
12: Transition to Java, Java Basics: Classes, Interfaces
Mon 6/14 - Tue 6/15 Midterm 1 Prior exams:
21sp:      
20fa:      
20su:      
20sp:      
19fa:      
19sp:      
18fa:      
13: Java Static Methods and Arrays  
14: Resizeable Arrays and Java ASM  
15: Java ASM, Subtyping, Static Types vs. Dynamic Classes  
Sat 6/19
Week 5 Videos
Recitation materials
Content quiz
16: Generic Types and Collections, Overriding
17: Equality and Iteration
18: Exceptions
19: I/O
Sat 6/26
Week 5 Videos
Recitation materials
Content quiz
20: I/O & Histogram Demo
Bonus Lecture: Code _is_ data
Semester Recap
Wed 6/30 - Thu 7/1 Midterm 2 Prior exams:
20fa:      
20su:      
20sp:      
19fa:      
19sp:      
18fa:      
Sat 7/03