Schedule

This schedule is tentative and likely to be revised.

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/27
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/3
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/10
12: Transition to Java, Java Basics: Classes, Interfaces
Mon 6/12 - Tue 6/13 Midterm 1 Prior exams:
22su:      
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
13: Java Static Methods and Arrays  
14: Resizeable Arrays and Java ASM  
15: Java ASM, Subtyping  
Sat 6/17
Juneteenth (no classes)
16: Static Types vs. Dynamic Classes, Generic Types and Collections, Overriding, Equality  
17: Enumerations and Iteration  
18: Exceptions  
Sat 6/24
19: I/O & Histogram Demo  
Bonus Lecture: Code _is_ data  
Semester Recap
Wed 6/28 - Thu 6/29 Midterm 2 Prior exams:
22su:      
22sp:      
21fa:      
21su:      
21sp:      
20fa:      
20su:      
Sat 7/01