Schedule

This schedule is tentative and likely to be revised.

Date Topic Slides Code Reading
Week 1 Lecture Videos
Wed 1/15 Introductions, Program Design lec01.pdf tickets.ml  
Chapter 1
Fri 1/17 Value-Oriented Programming lec02.pdf
Chapter 2
Week 2 Lecture Videos
Mon 1/20 No Class: MLK Day
Wed 1/22 Functions, Lists and Recursion lec03.pdf
Chapter 3
Fri 1/24 Lists, Tuples, Nested Patterns lec04.pdf patterns.ml  
Chapter 4
Week 3 Lecture Videos
Mon 1/27 Datatypes and Trees lec05.pdf tree.ml  treeExamples.ml  
Chapter 5
Chapter 6
Tue 1/28 HW01 (Finger Exercises) due
Wed 1/29 Trees and Binary Search lec06.pdf bst.ml  
Chapter 7
Fri 1/31 BST Insert & Delete lec07.pdf bst.ml  
Chapter 7
Chapter 8
Week 4 Lecture Videos
Mon 2/3 Generics and Higher-order Functions lec08.pdf
Chapter 8
Tue 2/4 HW02 (Computing Human Evolution) due
Wed 2/5 Higher-order Functions: Transform and Fold lec09.pdf hof.ml  
Chapter 9
Fri 2/7 Abstract Types: Sets lec10.pdf sets.ml  
Chapter 10
Week 5 Lecture Videos
Mon 2/10 Abstract Types II: Sets lec11.pdf
Chapter 10
Tue 2/11 HW03 (Abstraction and Modularity) due
Wed 2/12 Finite maps and Typechecking lec12.pdf finiteMap.ml  
Fri 2/14 NO CLASS (watch video before Wednesday 2/19) Options / Records / Unit, Sequencing, Commands / Mutable State Aliasing lec13.pdf
Chapter 11
Chapter 12
Chapter 13
Chapter 14
Week 6 Lecture Videos
Mon 2/17 Midterm 1 Prior exams:
25sp:  blank  soln  
24fa:  blank  soln  
24sp:  blank  soln  
23fa:  blank  soln  
23sp:  blank  soln  
Wed 2/19 Mutable Data Structures, Abstract Stack Machine lec14.pdf
Chapter 14
Chapter 15
Fri 2/21 Mutable Queues lec15.pdf q.ml  
Chapter 16
Week 7 Lecture Videos
Mon 2/24 Iteration and Tail Recursion lec16.pdf
Chapter 16
Tue 2/25 HW04 (Mutable Queues) due
Wed 2/26 Closures and Objects lec17.pdf
Chapter 17
Fri 2/28 GUI Design: Gctx and Widgets lec18.pdf gctx.ml  simpleWidget.mli  hello.ml  fractalTree.ml  
Chapter 18
Week 8 Lecture Videos
Mon 3/3 GUI Design: Widgets, Layout, and Events lec19.pdf simpleWidget.ml  simpleEventLoop.ml  swdemo.ml  
Chapter 18
Wed 3/5 GUI Design: Events, Notifiers, and Controllers lec20.pdf notifierdemo.ml  onoff-start.ml  onoff.ml  
Chapter 18
Fri 3/7 No Class: Spring Break
Mon 3/10 No Class: Spring Break
Wed 3/12 No Class: Spring Break
Fri 3/14 No Class: Spring Break
Week 9 Lecture Videos
Mon 3/17 Transition to Java lec21.pdf
Chapter 19
Chapter 20
Tue 3/18 HW05 (GUI Library and Paint) due
Wed 3/19 Interfaces, Static Methods lec22.pdf
Chapter 21
Fri 3/21 Arrays and Java ASM lec23.pdf ArrayExamples.java  ArrayExamplesTest.java  
Chapter 22
Chapter 23
Week 10 Lecture Videos
Mon 3/24 Java ASM, Subtyping and Extension lec24.pdf Shapes.zip  ResArray.java  ResArrayTest.java  
Chapter 22
Chapter 23
Tue 3/25 HW06 (Pennstagram) due
Wed 3/26 Java ASM, Dynamic Dispatch lec25.pdf
Chapter 23
Chapter 24
Fri 3/28 Midterm 2 Prior exams:
25sp:  blank  soln  
24fa:  blank  soln  
24sp:  blank  soln  
23fa:  blank  soln  
23sp:  blank  soln  
22fa:  blank  soln  
Week 11 Lecture Videos
Mon 3/31 Static members and Generic Types lec26.pdf
Chapter 24
Chapter 25
Wed 4/2 Collections, Overriding, Equality lec27.pdf Point.java  TreeSetExample.java  Main.java  
Chapter 26
Fri 4/4 Overriding Equality lec28.pdf
Chapter 25
Week 12 Lecture Videos
Mon 4/7 Iterators, Enums, Exceptions lec29.pdf ExceptionExample.java  C.java  
Chapter 25
Chapter 27
Tue 4/8 HW07 (PennPals) due
Wed 4/9 Java I/O lec30.pdf Image.java  
Chapter 28
Fri 4/11 I/O: Histogram Demo lec31.pdf Histogram.java  WordScanner.java  WordScannerTest.java  
Chapter 28
Week 13 Lecture Videos
Mon 4/14 Swing I: Drawing and Event Handling lec32.pdf DrawingCanvas.java  DrawingCanvasMain.java  OnOff.java  
Chapter 29
Tue 4/15 HW09 (Game Checkpoint) due
Wed 4/16 Swing II: Inner Classes and Layout lec33.pdf LayoutDemo.java  
Chapter 29
Thu 4/17 HW08 (Chatterbot) due
Fri 4/18 Bonus Lecture: Code _is_ data
Week 14 Lecture Videos
Mon 4/21 Swing III: MoD lec34.pdf
Chapter 30
Wed 4/23 Swing IV: Reimplementing Paint / Advanced Java lec35.pdf paint.zip  MultiThreaded.java  CollectionRace.java  HashTest.java  HashExample.java  GCTest.java  Streams.java  
Chapter 31
Fri 4/25 Bonus Lecture: CIS and Sustainability
Week 15 Lecture Videos
Mon 4/28 Bonus Lecture: OCaml at Jane Street
Tue 4/29 HW09 (Make Your Own Game) due
Wed 4/30 Semester Recap lec38.pdf
Wed 5/7 Final Exam Prior exams:
25sp:  blank  soln  
24fa:  blank  soln  
24sp:  blank  soln  
23fa:  blank  soln  
23sp:  blank  soln  
22fa:  blank  soln  
22sp:  blank  soln  
21fa:  blank  online  soln