Schedule

Lecture recordings are available on Canvas.
Content Quizzes are available on Gradescope and are due Fridays 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
Introductions, Program Design    
Value-Oriented Programming
No Class: MLK Day
Functions, Lists and Recursion
Lists, Tuples, Nested Patterns
Datatypes and Trees
Tue 1/25
Trees and Binary Search
BST Insert & Delete
Generics and Higher-order Functions
Tue 2/1
Higher-order Functions: Transform and Fold
Abstract Types: Sets
Abstract Types: Sets & Finite Maps
Tue 2/8
Typechecking
Midterm 1 Prior exams:
21fa:      
21sp:      
20fa:      
20sp:      
19fa:      
19sp:      
Options, Unit, Commands / Records / Mutable State Aliasing
Mutable Data Structures, Abstract Stack Machine
Mutable Queues
Iteration and Tail Recursion
Tue 2/22
Closures and Objects
GUI Design: Gctx and Widgets
GUI Design: Widgets, Layout, and Events
GUI Design: Events, Notifiers, and Controllers
No Class
No Class: Spring Break
No Class: Spring Break
No Class: Spring Break
Transition to Java
Tue 3/15
Java Basics: Classes, Interfaces
Static Methods, Java Arrays
Java ASM, Subtyping
Tue 3/22
Java ASM, Dynamic Dispatch
Midterm 2 Prior exams:
21fa:      
21sp:      
20fa:      
19fa:      
19sp:      
18fa:      
Java ASM, Dynamic Dispatch, Generic Types
Generic Types and Collections
Overriding, Equality
Enums, Iteration
Tue 4/5
Exceptions
Java I/O
I/O: Histogram Demo
Tue 4/12
Swing I: Drawing and Event Handling
Swing II: Inner Classes, Layout, Reimplementing Paint
Swing III: MoD, Adapters, Design Patterns
Tue 4/19
Swing IV: Reimplementing Paint / Design Patterns / Lambdas / Streams
Bonus Lecture: Code _is_ data
Advanced Java: Concurrency, Hashing, Memory Management
Semester Recap
Wed 4/27
TBA Final Exam Prior exams:
21fa:        
21sp:      
20fa:      
20sp:      
19fa:      
19sp: