Schedule

Lecture recordings are available on Canvas.
Content Quizzes are available on Gradescope and are due Saturdays at midnight.
Recitation Materials are available in this Google Drive.
Add the calendar of Homeworks, Exams, and Review sessions to your Google Calendar.

Date Topic Slides Code Reading
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/28
Memorial Day Observed (no classes)
5: Generics and Higher-order Functions: Transform and Fold      
6: Abstract Types: Sets  
7: Abstract Types: Finite Maps, Typechecking  
Sat 6/4
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/11
12: Transition to Java, Java Basics: Classes, Interfaces
Mon 6/13 - Tue 6/14 Midterm 1 Prior exams:
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
20sp:      
19fa:      
13: Java Static Methods and Arrays  
14: Resizeable Arrays and Java ASM  
15: Java ASM, Subtyping  
Sat 6/18
Juneteenth Observed (no classes)
16: Static Types vs. Dynamic Classes, Generic Types and Collections, Overriding, Equality  
17: Enumerations and Iteration  
18: Exceptions  
Sat 6/25
19: I/O & Histogram Demo  
Bonus Lecture: Code _is_ data  
Semester Recap
Wed 6/29 - Thu 6/30 Midterm 2 Prior exams:
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
20sp:      
19fa:      
Sat 7/02