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 |