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
No Class: Labor Day
Lists and Recursion
Lists, Tuples, Nested Patterns
Week 3 Videos
Datatypes and Trees
Tue 9/15
Trees and Binary Search
BST Insert & Delete
Week 4 Videos
Generics and Higher-order Functions
Tue 9/22
Higher-order Functions: Transform and Fold
Abstract Types: Sets
Week 5 Videos
Abstract Types: Sets & Finite Maps
Tue 9/29
Finite Maps (cont'd) / Typechecking
Midterm 1 Exams:
20fa:  
20sp:  
19fa:  
19sp:  
18fa:  
Week 6 Videos
Options, Unit, Commands / Records / Mutable State Aliasing
Mutable Data Structures, Abstract Stack Machine
Mutable Queues
Week 7 Videos
Iteration and Tail Recursion
Tue 10/13
Closures and Objects / NO RECITATIONS THIS WEEK
No Class: Virtual Fall Break
Week 8 Videos
GUI Design: Gctx and Widgets
GUI Design: Widgets and Layout
GUI Design: Widgets and Events
Week 9 Videos
Transition to Java
Java Basics: Classes, Interfaces
Thu 10/29
Java Static Methods and Arrays
Week 10 Videos
Java Arrays: ResArray Demo, Java ASM
Java ASM, Subtyping
Thu 11/5
Java ASM, Dynamic Dispatch
Week 11 Videos
Generic Types and Collections
Overriding, Equality
Midterm 2 Exams:
20fa:  
19fa:  
19sp:  
18fa:  
18sp:  
Week 12 Videos
Enums, Iteration
Tue 11/17
Exceptions
I/O
Week 13 Videos
I/O: Histogram Demo
Tue 11/24
Bonus Lecture: Code _is_ data
No Class: Thanksgiving Break
Week 14 Videos
Swing I: Drawing
Tue 12/1
Swing II: Event Handling, Inner Classes, and Layout
Swing III: MoD, Adapaters
Week 15 Videos
Swing IV: Reimplementing Paint / Design Patterns
Advanced Java: Hashing, Concurrency, Lambdas, Memory Management
Thu 12/10 Semester Recap
Thu 12/10
Tue 12/15 - Fri 12/18 Final Exam (see details on Piazza) Exams:
20fa:  
20sp:  
19fa:  
19sp:  
18fa: