Date | Topic | Slides | Code | Reading |
8/26 | | | | |
8/28 | Introductions, Program Design | lec01.pdf | assert.ml tickets.ml | Syllabus Chapter 1 Codio set up |
8/30 | Value-Oriented Programming | lec02.pdf | | Chapter 2 OCaml style guide |
9/2 | No Class: Labor Day | | | |
9/4 | Lists and Recursion | lec03.pdf | | Chapter 3 |
9/6 | Lists, Tuples, Nested Patterns | lec04.pdf | patterns.ml | Chapters 4 and 5 |
9/9 | Datatypes and Trees | lec05.pdf | tree.ml treeExamples.ml ppTree.ml | Chapters 5 and 6 |
9/10 | HW01 (Finger Exercises) due | | | |
9/11 | Trees and Binary Search | lec06.pdf | tree.ml treeExamples.ml | Chapters and 7 |
9/13 | BST Insert & Delete | lec07.pdf | bst.ml | Chapters 7 and 8 |
9/16 | Generics and Higher-order Functions | lec08.pdf | funs.ml | Chapters 8 and 9 |
9/17 | HW02 (Computing Human Evolution) due | | | |
9/18 | Higher-order Functions: Transform and Fold | lec09.pdf | transform.ml | Chapter 10 |
9/20 | Abstract Types: Sets | lec10.pdf | hof.ml sets.ml | Chapter 10 |
9/23 | Abstract Types: Sets & Finite Maps | lec11.pdf | sets.ml finiteMap.ml | Chapter 10 |
9/24 | HW03 (Sets, Abstraction, and Higher-Order Functions) due | | | |
9/25 | Finite Maps / Options, Unit, Commands | lec12.pdf | finiteMap.ml | Chapters 11, 12, 13 |
9/27 | Midterm I
| | 19sp: blank | solution 18fa: blank | solution 18sp: blank | solution 17fa: blank | solution 17sp: blank | solution | actual blank | solution |
9/30 | Records, Mutability, Abstract Stack Machine | lec13.pdf | mutable.ml | Chapter 14, 15 |
10/2 | ASM Continued, Reference Equality | lec14.pdf | | Chapter 16 |
10/4 | Mutable Queues | lec15.pdf | q.ml | Chapter 16 |
10/7 | Iteration and Tail Recursion | lec16.pdf | q2.ml | Chapter 16 |
10/8 | HW04 (Mutable Queues) due | | | |
10/9 | Closures and Objects / Typechecking Revisited | lec17.pdf | | Chapter 17 |
10/11 | No Class: Fall Break | | | |
10/14 | GUI Design: Gctx and Widgets | lec18.pdf | | Chapter 18 |
10/16 | GUI Design: Widgets and Layout | lec19.pdf | gctx.ml simpleWidget.ml swdemo.ml | Chapter 18 |
10/18 | GUI Design: Widgets and Events | lec20.pdf | notifierdemo.ml onoff-start.ml onoff-finished.ml | Chapter 18 |
10/21 | Transition to Java | lec21.pdf | | Chapters 19 and 20 |
10/22 | HW05 (GUI Library and Paint) due | | | |
10/23 | Java Basics: Classes, Interfaces | lec22.pdf | | Chapters 19 and 20 |
10/25 | Java Static Methods and Arrays | lec23.pdf | ArrayExamples.java ArrayExamplesTest.java | Chapter 21 |
10/28 | Java Arrays: ResArray Demo | lec24.pdf | ResArray.java ResArrayTest.java | Chapter 22 |
10/30 | Java ASM, Subtyping | lec25.pdf | Shapes.zip | Chapter 23 and 24 |
11/1 | Dynamic Dispatch / Java ASM | lec26.pdf | | Chapter 24 |
11/4 | Generic Types and Collections | lec27.pdf | Point.java TreeSetExample.java | Chapter 25 |
11/5 | HW06 (Pennstagram) due | | | |
11/6 | Overriding, Equality | lec28.pdf | | Chapter 26 |
11/8 | Midterm II
| | 19sp: blank | solution 18fa: blank | solution 18sp: blank | solution 17fa: blank | solution 17sp: blank | solution | actual blank | solution |
11/11 | Equality, Enums, Iteration | lec29.pdf | | Chapter 25 and 26 |
11/13 | Exceptions | lec30.pdf | ExceptionExamples.java Exceptions.java | Chapter 27 |
11/15 | I/O | lec31.pdf | Image.java mandrill.pgm Histogram.java WordScanner.java WordScannerTest.java problem.txt | Chapter 28 |
11/18 | Histogram Demo | lec32.pdf | Histogram.java WordScanner.java WordScannerTest.java problem.txt | Chapter 28 |
11/19 | HW07 (PennPals) due | | | |
11/20 | Swing I: Drawing | lec33.pdf | DrawingCanvas.java DrawingCanvasMain.java | Chapter 29 |
11/21 | HW09 Game Checkpoint due | | | |
11/22 | Swing II: Event Handling, Inner Classes, and Layout | lec34.pdf | OnOff.java LayoutDemo.java | Chapter 30 |
11/25 | Swing III: MoD, Adapaters | lec35.pdf | | |
11/26 | HW08 (TwitterBot) due | | | |
11/27 | Bonus Lecture: Code is Data | lec36.pdf | Quine.java | Chapter 31 |
11/29 | No Class: Thanksgiving Break | | | |
12/2 | Class canceled: Power Outage in Leidy Labs | | | |
12/4 | Swing IV: Reimplementing Paint / Design Patterns | lec37.pdf | paint.zip | |
12/6 | Advanced Java: Concurrency, Hashing, Lambdas, Memory Management | lec38.pdf | MultiThreaded.java HashExample.java HashTest.java manmem.c GCTest.java PaintF.java Streams.java | |
12/9 | Semester Recap | lec39.pdf | | |
12/9 | HW09 (Make Your Own Game) due | | | |
12/11 | No Class: Reading Days | | | |
12/13 | No Class: Reading Days | | | |
12/16 | No Class: Final Exams | | | |
12/17 | Final Exam 6:00-8:00PM
| | 19sp: blank | solution 18fa: blank | solution 18sp: blank | solution 17fa: blank | solution 17sp: blank | solution | actual blank | solution |