This schedule is tentative and likely to be revised. |
Date | Topic | Slides | Code | Reading |
---|---|---|---|---|
Week 1 Videos | ||||
Wed 9/2 | Introductions, Program Design | lec01.pdf overview.pdf |
assert.ml tickets.ml |
Chapter 1 |
Fri 9/4 | Value-Oriented Programming | lec02.pdf | Chapter 2 |
|
Week 2 Videos | ||||
Mon 9/7 | No Class: Labor Day | |||
Wed 9/9 | Lists and Recursion | lec03.pdf | listrec.ml |
Chapter 3 |
Fri 9/11 | Lists, Tuples, Nested Patterns | lec04.pdf | patterns.ml |
Chapter 4 Chapter 5 |
Week 3 Videos | ||||
Mon 9/14 | Datatypes and Trees | lec05.pdf | tree.ml treeExamples.ml ppTree.ml filesystem.ml |
Chapter 5 Chapter 6 |
Tue 9/15 | HW01 (Finger Exercises) due | |||
Wed 9/16 | Trees and Binary Search | lec06.pdf | tree.ml treeExamples.ml bst.ml |
Chapter 7 |
Fri 9/18 | BST Insert & Delete | lec07.pdf | bst.ml |
Chapter 7 Chapter 8 |
Week 4 Videos | ||||
Mon 9/21 | Generics and Higher-order Functions | lec08.pdf | funs.ml |
Chapter 8 |
Tue 9/22 | HW02 (Computing Human Evolution) due | |||
Wed 9/23 | Higher-order Functions: Transform and Fold | lec09.pdf | transform.ml fold.ml |
Chapter 9 |
Fri 9/25 | Abstract Types: Sets | lec10.pdf | sets.ml |
Chapter 10 |
Week 5 Videos | ||||
Mon 9/28 | Abstract Types: Sets & Finite Maps | lec11.pdf | sets.ml finiteMap.ml |
Chapter 10 |
Tue 9/29 | HW03 (Abstraction and Modularity) due | |||
Wed 9/30 | Finite Maps (cont'd) / Typechecking | lec12.pdf | finiteMap.ml |
Chapter 10 |
Fri 10/2 | Midterm 1 |
Exams: 20fa: blank, appendix, solutions, 20sp: blank, soln, 19fa: blank, soln, 19sp: blank, soln, 18fa: blank, soln, |
||
Week 6 Videos | ||||
Mon 10/5 | Options, Unit, Commands / Records / Mutable State Aliasing | lec13.pdf lec13-part2.pdf |
Chapter 11 Chapter 12 Chapter 13 Chapter 14 |
|
Wed 10/7 | Mutable Data Structures, Abstract Stack Machine | lec14.pdf | mutable.ml |
Chapter 14 Chapter 15 |
Fri 10/9 | Mutable Queues | lec15.pdf | q.ml |
Chapter 16 |
Week 7 Videos | ||||
Mon 10/12 | Iteration and Tail Recursion | lec16.pdf | q2.ml |
Chapter 16 |
Tue 10/13 | HW04 (Mutable Queues) due | |||
Wed 10/14 | Closures and Objects / NO RECITATIONS THIS WEEK | lec17.pdf | counter.ml |
Chapter 17 |
Fri 10/16 | No Class: Virtual Fall Break | |||
Week 8 Videos | ||||
Mon 10/19 | GUI Design: Gctx and Widgets | lec18.pdf | Chapter 18 |
|
Wed 10/21 | GUI Design: Widgets and Layout | lec19.pdf | gctx.ml simpleWidget.ml simpleEventLoop.ml hello.ml fractalTree.ml swdemo.ml |
Chapter 18 |
Fri 10/23 | GUI Design: Widgets and Events | lec20.pdf | notifierdemo.ml onoff-start.ml onoff-finished.ml |
Chapter 18 |
Week 9 Videos | ||||
Mon 10/26 | Transition to Java | lec21.pdf | Chapter 19 Chapter 20 |
|
Wed 10/28 | Java Basics: Classes, Interfaces | lec22.pdf | Chapter 19 Chapter 20 |
|
Thu 10/29 | HW05 (GUI Library and Paint) due | |||
Fri 10/30 | Java Static Methods and Arrays | lec23.pdf | ArrayExamples.java ArrayExamplesTest.java |
Chapter 21 |
Week 10 Videos | ||||
Mon 11/2 | Java Arrays: ResArray Demo, Java ASM | lec24.pdf | ResArray.java ResArrayTest.java |
Chapter 32 Chapter 22 |
Wed 11/4 | Java ASM, Subtyping | lec25.pdf | Animals.zip Shapes.zip |
Chapter 22 Chapter 23 |
Thu 11/5 | HW06 (Pennstagram) due | |||
Fri 11/6 | Java ASM, Dynamic Dispatch | lec26.pdf | Animals.zip Shapes.zip |
Chapter 23 Chapter 24 |
Week 11 Videos | ||||
Mon 11/9 | Generic Types and Collections | lec27.pdf | Shapes.zip Point.java TreeSetExample.java |
Chapter 25 |
Wed 11/11 | Overriding, Equality | lec28.pdf | Chapter 26 |
|
Fri 11/13 | Midterm 2 |
Exams: 20fa: blank, appendix, solutions, 19fa: blank, soln, 19sp: blank, soln, 18fa: blank, soln, 18sp: blank, soln, |
||
Week 12 Videos | ||||
Mon 11/16 | Enums, Iteration | lec29.pdf | Chapter 25 |
|
Tue 11/17 | HW07 (PennPals) due | |||
Wed 11/18 | Exceptions | lec30.pdf | Chapter 27 |
|
Fri 11/20 | I/O | lec31.pdf | Image.java mandrill.pgm |
Chapter 28 |
Week 13 Videos | ||||
Mon 11/23 | I/O: Histogram Demo | lec32.pdf | Histogram.java WordScanner.java WordScannerTest.java problem.txt |
Chapter 28 |
Tue 11/24 | HW08 (Twitterbot) due | |||
Wed 11/25 | Bonus Lecture: Code _is_ data | lec33.pdf | Quine.java |
|
Fri 11/27 | No Class: Thanksgiving Break | |||
Week 14 Videos | ||||
Mon 11/30 | Swing I: Drawing | lec34.pdf | DrawingCanvas.java DrawingCanvasMain.java |
Chapter 29 |
Tue 12/1 | HW09 (Game Checkpoint) due | |||
Wed 12/2 | Swing II: Event Handling, Inner Classes, and Layout | lec35.pdf | OnOff.java LayoutDemo.java |
Chapter 30 |
Fri 12/4 | Swing III: MoD, Adapaters | lec36.pdf | ||
Week 15 Videos | ||||
Mon 12/7 | Swing IV: Reimplementing Paint / Design Patterns | lec37.pdf | paint.zip |
Chapter 31 |
Wed 12/9 | Advanced Java: Hashing, Concurrency, Lambdas, Memory Management | lec38.pdf | HashExample.java HashTest.java MultiThreaded.java manmem.c GCTest.java Streams.java PaintF.java |
|
Thu 12/10 | Semester Recap | lec39.pdf | ||
Thu 12/10 | HW09 (Make Your Own Game) due | |||
Tue 12/15 - Fri 12/18 | Final Exam (see details on Piazza) |
Exams: 20fa: blank, appendix, solutions, 20sp: blank, soln, 19fa: blank, soln, 19sp: blank, soln, 18fa: blank, soln, |