Schedule

This schedule is tentative and likely to be revised.
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          
Sat 6/1
4: Trees and Binary Search Trees      
5: Generics and Higher-order Functions: Transform and Fold      
6: Abstract Types: Sets  
7: Abstract Types: Finite Maps, Typechecking  
Sat 6/8
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/15
12: Transition to Java, Java Basics: Classes, Interfaces
Midterm 1 Prior exams:
24su (coding):      
24su (concept):      
23su:      
22su:      
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
Juneteenth (no classes)
13: Java Static Methods and Arrays  
14: Resizeable Arrays and Java ASM  
Sat 6/22
15: Java ASM, Subtyping  
16: Static Types vs. Dynamic Classes, Generic Types and Collections, Overriding, Equality  
17: Enumerations and Iteration  
Sat 6/29
18: Exceptions  
19: I/O & Histogram Demo  
Wed 7/3 Midterm 2 Prior exams:
23su:      
22su:      
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
Sat 7/06