CIS 120: Programming Languages and Techniques I

CIS120 Lecture Schedule

Lecture notes: Chapters 1-32

Date Topic Slides Handouts
1/9
Introductions, Program Design lec01.pdf
First day of class
1/11
Program Design in OCaml lec02.pdf
ticket.ml
1/14
Value-Oriented Programming and Lists lec03.pdf
gaga.ml (stub)
1/16
Lists and Recursion lec04.pdf
gaga.ml (complete)
1/18
Tuples and Lists lec05.pdf
lists.ml
1/21
MLK day: No class
1/23
Datatypes and Binary Trees lec06.pdf
trees.ml
1/25
Binary Search Trees lec07.pdf
bst.ml
1/28
BST II and Generics lec08.pdf
bstdone.ml
Note: Add period ends
1/30
Abstract types: sets lec09.pdf
myset.ml
myset.mli
myset_test.ml
sets.ml
2/1
Abstract types: Finite maps lec10.pdf
mymap.ml test_map.ml
2/4
First-class Functions lec11.pdf
majors.ml
2/6
Options, Unit, and (mutable!) Records lec12.pdf
state.ml
2/8
The Abstract Stack Machine lec13.pdf
2/11
Queues I: Mutable, linked datastructures lec14.pdf
listQ.mli
listQ.ml
testQ.ml
2/13
Queues II lec15.pdf
linkedQ.mli
linkedQ.ml
2/15
Preliminary Exam I
Note: Drop period ends
2/18
Iteration lec16.pdf
2/20
GUI I: "Objects" and GUI I lec17.pdf
counter.ml
2/22
GUI II: Layout lec18.pdf
simpleWidget.ml simpleWidget.mli swdemo.ml
See homework 6 for Gctx module.
2/25
GUI III: Events lec19.pdf
lightswitch.ml
2/27
Transition to Java: objects, classes, interfaces lec20.pdf
3/1
Transition to Java: Declarative programming in Java lec21.pdf
3/4
Spring Break
3/6
Spring Break
3/8
Spring Break
3/11
Design Exercise: Resizable Arrays lec22.pdf
ResArray.java
ResArrayTest.java
3/13
Implementing Resizable Arrays lec23.pdf
ResArray2.java
3/15
Java ASM and Subtyping lec24.pdf
3/18
Java ASM and Dynamic Dispatch lec25.pdf Main1.java Main2.java Main3.java
3/20
Generics and Queues lec26.pdf
Queue.java QueueImpl.java
QNode.java QueueTest.java
3/22
Generics, Collections and Iteration lec27.pdf
Iterator.java
3/25
Exceptions lec28.pdf
3/27
IO lec29.pdf
Demo files
3/29
Preliminary Exam II
4/1
Histogram Demo lec30.pdf
WordScanner.java
WordScannerTest.java
Histogram.java
problem.txt
4/3
Overriding and Equality lec31.pdf
4/5
Equality (continued) lec32.pdf
Point.java
4/8
Swing I: Drawing and Event Handling lec33.pdf
DrawingCanvas.java
DrawingCanvasExample.java
OnOffExample.java
4/10
Swing II: Layout, Inner classes and refactoring lec34.pdf
LayoutExample.java
DrawingExample.java
Shape.java
4/12
Bonus Lecture: Consequences of Code as Data bonus.pdf
Quine.java
4/15
Mouse Interaction lec35.pdf
Paint demo
(PaintA--start of class, PaintD--end of class)
4/17
Hashing & Spreadsheet demo lec36.pdf
Initial design code
4/19
Spreadsheet demo Spreadsheet (in class code)
Spreadsheet (full version)
4/22
Course Wrap Up lec37.pdf
5/3
Final Exam
9-11 AM