CIS 120

caml | java api | piazza |
upenn.edu | directories | portal | van pelt library
seas.upenn.edu | engineering library
dining philosophers (DP) | science & tech wing (STWING) | women in cs (WICS)
CETS Answers |

CIS120 Lecture Schedule

Lecture notes: Chapters 1-32

Date Topic Slides Handouts
1/11
Introductions, Program Design lec01.pdf
First day of class
1/13
Program Design in OCaml lec02.pdf
Tickets.ml
1/16
MLK day: No class
1/18
Lists and Recursion lec03.pdf
Gaga.ml
1/20
Lists II lec04.pdf
Lists.ml
1/23
Tuples, Datatypes and Trees lec05.pdf
Trees.ml
1/25
Binary Trees lec06.pdf
MoreTrees.ml
1/27
Binary Search Trees lec07.pdf
Bst.ml
1/30
Abstraction lec08.pdf
Note: Add period ends
2/1
Map demo lec09.pdf
Map.ml
2/3
Abstract Types and First-class Functions lec10.pdf
Map2.ml Majors.ml
2/6
First-class Functions lec11.pdf
2/8
Options, Unit, and (mutable!) Records lec12.pdf
2/10
The Abstract Stack Machine lec13.pdf
2/13
Queues I: Mutable, linked datastructures lec14.pdf
queue.ml
2/15
Preliminary Exam I
2/17
Queues II: Iteration lec15.pdf
Note: Drop period ends
2/20
"Objects" and GUI I: Design Discussion lec16.pdf
counter.ml
2/22
GUI II: Widgets lec17.pdf
simpleWidget.ml simpleWidget.mli swdemo.ml
See homework 6 for Gctx module.
2/24
GUI III: Events, Listeners, and Applications lec18.pdf
lightswitch.ml
2/27
Transition to Java: objects, classes, interfaces lec19.pdf
2/29
Transition to Java: value-oriented programming lec20.pdf
3/2
Static Methods & Programming with Arrays lec21.pdf
ArrayExamples.java
ArrayExamplesTest.java
3/5
Spring Break
3/7
Spring Break
3/9
Spring Break
3/12
Design Exercise: Resizable Arrays lec22.pdf
ResArray.java ResArrayTest.java
3/14
Java ASM and Encapsulation lec23.pdf
ResArrayFinished.java ResArrayTestFinished.java
3/16
Subtyping and Extension lec24.pdf
Main1.java Main2.java Main3.java
3/19
Java ASM and Dynamic Dispatch lec25.pdf
3/21
Encapsulation and Queues lec26.pdf
Queue.java QueueImpl.java
QNode.java QueueTest.java
3/23
Generics, Subtyping and Iteration lec27.pdf
3/26
Queue Iterators & Exceptions I lec28.pdf
QueueIterator.java
revised QueueImpl.java
3/28
Exceptions II lec29.pdf
3/30
Preliminary Exam II
Note: Covers up to (roughly) 3/23. Withdrawal period ends
4/2
IO lec30.pdf
Demo files
4/4
Histogram Demo lec31.pdf
Demo files
4/6
Swing I lec32.pdf
DrawingExample.java OnOffExample.java
4/9
Swing II: Layout and OO refactoring lec33.pdf
DrawingExample (before refactoring)
DrawingExample (after refactoring)
Shape.java
4/11
Swing III: Inner classes and more refactoring lec34.pdf
Five refactorings: drawing.zip
4/13
Bonus Lecture: Consequences of Code as Data bonus.pdf
Quine.java
4/16
Mouse Interaction lec35.pdf
Paint demo (Variants A - D)
4/18
Keyboard Interaction & Spreadsheet demo lec36.pdf
Paint demo (all Variants)
4/20
Spreadsheet demo Spreadsheet (in class code)
Spreadsheet (full version)
4/23
Course Wrap Up lec37.pdf
4/8
Final Exam
9AM