This schedule is subject to revision. Lecture screencasts can be found at the (PennKey protected) course Canvas site. (If you don't see any recordings, try clicking the "Class Recordings" tab on the left-hand side. If you still don't see them, try a different browser -- we've had good luck with Chrome).

Date Topic Slides Code Reading
Introductions, Program Design, Value Oriented Programming
Lists and Pattern Matching
Tuples, Nested Patterns, Datatypes and Trees
Sun 5/31
Trees and Binary Search, BST Insert & Delete
Generics and Higher-order Functions: Transform and Fold
Abstract Types: Sets, Finite Maps
Typechecking / Options
Fri 6/5
Programming with Mutable Data Structures, Abstract Stack Machine, Reference Equality
Mutable Queues, Iteration and Tail Recursion
Closures and Objects
Transition to Java, Java Basics: Classes, Interfaces
Fri 6/12
Mon 6/15 Midterm 1
Java Static Methods and Arrays, ResArray Demo
Java ASM and objects
Subtyping & Dynamic Dispatch, Generic Types, Collections, Overriding, Equality
Collections, Overriding, Equality
Fri 6/19
Enums, Iteration
Histogram Demo
Fri 6/26
Semester Recap
Wed 7/1
Wed 7/1 Midterm 2