Schedule

This schedule is tentative and likely to be revised.

Date Topic Slides Code Reading
Week 1 Videos
Introductions, Program Design
Value-Oriented Programming
Week 2 Videos
Recitation materials
Content quiz
Lists and Recursion
Lists, Tuples, Nested Patterns
Datatypes and Trees
Week 3 Videos
Trees and Binary Search
Tue 2/2
BST Insert & Delete
Generics and Higher-order Functions
Week 4 Videos
Higher-order Functions: Transform and Fold
Tue 2/9
Abstract Types: Sets
No Class: Engagement Day
Week 5 Videos
Abstract Types: Sets & Finite Maps
Tue 9/29
Finite Maps (cont'd) / Typechecking
Options, Unit, Commands / Records / Mutable State Aliasing
Week 6 Videos
Midterm 1 Prior exams:
20fa:      
20sp:      
19fa:      
19sp:      
18fa:      
Mutable Data Structures, Abstract Stack Machine
Mutable Queues
Week 7 Videos
Iteration and Tail Recursion
Tue 3/2
Closures and Objects
GUI Design: Gctx and Widgets
Week 8 Videos
GUI Design: Widgets and Layout
No Class: Spring Break
GUI Design: Widgets and Events
Week 9 Videos
Transition to Java
Tues 3/16
Java Basics: Classes, Interfaces
Java Static Methods and Arrays
Week 10 Videos
Java Arrays: ResArray Demo, Java ASM
Tue 3/23
Java ASM, Subtyping
Java ASM, Dynamic Dispatch
Week 11 Videos
Generic Types and Collections
Overriding, Equality
Midterm 2 Prior exams:
20fa:      
19fa:      
19sp:      
18fa:      
18sp:      
Week 12 Videos
Enums, Iteration
Exceptions
Thurs 4/8
I/O
Week 13 Videos
No Class: Engagement day
I/O: Histogram Demo
Thurs 4/15
Swing I: Drawing
Week 14 Videos
Swing II: Event Handling, Inner Classes, and Layout
Tue 4/20
Swing III: MoD, Adapaters
Bonus Lecture: Code _is_ data
Week 15 Videos
Advanced Java: Hashing, Concurrency, Lambdas, Memory Management
Semester Recap
Thu 4/29
Final Exam Prior exams:
20fa:      
20sp:      
19fa:      
19sp:      
18fa: