CIS 120: Programming Languages and Techniques I
Home
Syllabus
Labs
Exams
Lectures
Homework
Clicker Registration
Staff
Calendar
FAQ
Tutoring
Piazza
CIS 120 Resources
CIS 1xx Resources
CIS120 Lecture Schedule
Lecture notes
(updated frequently)
Lecture screencasts
Date
Topic
Slides
Code
Reading
1/15
Introductions, Program Design
lec01.pdf
assert.ml
tickets.ml
Syllabus
Chapter 1
Ocaml/Eclipse set up
1/17
Value-Oriented Programming
lec02.pdf
Chapter 2
OCaml style guide
1/20
No Class: Martin Luther King Jr. Day
1/22
No Class: Snow emergency
1/24
Lists and Recursion
lec03.pdf
email.ml
Chapter 3
1/27
Tuples and Lists
lec04.pdf
lists.ml
Chapter 4
1/29
Datatypes
lec05.pdf
Chapter 5
1/31
Binary Trees and Binary Search Trees
lec06.pdf
trees.ml
treeExamples.ml
Chapters 6 and 7
2/3
Binary Search Trees; Generics
lec07.pdf
bst.ml
Add period ends
Chapters 7 and 8
2/5
Abstract types: Sets; Modules and Interfaces
lec08.pdf
sets.ml
Chapter 9
2/7
Academic integrity discussion
Abstract types: Finite maps
lec09.pdf
mymap.ml
mymapTest.ml
2/10
First-class Functions
lec10.pdf
majors.ml
Chapter 10
2/12
Options, Unit, and Records
lec11.pdf
Chapters 11, 12 and 13
2/14
Mutable State; The Abstract Stack Machine
lec12.pdf
Chapters 14 and 15
2/17
The Abstract State Machine, II
lec13.pdf
2/19
Queues: Mutable, linked data structures
lec14.pdf
queue.ml
Chapter 16
2/21
Midterm I
Drop period ends
2/24
Mutable Queues
lec15.pdf
linkedQ.ml
2/26
Iteration; Objects
lec16.pdf
Chapter 17
2/28
Objects and GUIs
lec17.pdf
Chapter 18
3/3
GUI II: Layout
lec18.pdf
simpleWidget.ml
swdemo.ml
3/5
GUI III: Events
lec19.pdf
eventdemo.ml
3/7
Transition to Java
lec20.pdf
Chapter 19
3/10
No class: Spring Break
3/19
No class: Spring Break
3/21
No class: Spring Break
3/17
Connecting OCaml to Java
lec21.pdf
Chapters 20 and 21
3/19
Java Arrays
lec22.pdf
ResArray.java
ResArrayTest.java
Chapter 22
3/21
Design Exercise: Resizable Arrays
lec23.pdf
ResArray.java
3/24
Java ASM; Interfaces and Subtyping
lec24.pdf
Chapter 23
3/26
Immutable Lists; Inner Classes
lec25.pdf
3/28
Class and Interface Extension
lec26.pdf
Chapter 24
3/31
Dynamic Dispatch and the Java ASM
lec27.pdf
Chapter 25
4/2
Generics, Collections and Iteration
lec28.pdf
Queue.java
QueueImpl.java
QNode.java
QueueTest.java
Chapters 26 and 27
4/4
Midterm II
Withdraw period ends
4/7
Exceptions
lec29.pdf
Chapter 28
4/9
Histogram Demo
lec30.pdf
WordScanner.java
WordScannerTest.java
Chapter 29
4/11
Histogram Demo, continued
lec31.pdf
Histogram.java
problem.txt
4/14
IO (and exceptions)
lec32.pdf
Image.java
mandrill.pgm
4/16
Swing I: Drawing and Event Handling
lec33.pdf
DrawingCanvas.java
DrawingCanvasMain.java
OnOffExample.java
Chapter 30
4/18
Swing II: Layout and GUI design
lec34.pdf
LayoutExample.java
Chapter 31
4/21
Swing III: Interaction and Paint Demo
lec35.pdf
Paint.zip
Chapter 32
4/23
Overriding and Equality
lec36.pdf
Point.java
ColoredPoint.java
Chapter 33 (new!)
4/25
Bonus lecture
Quine.java
4/28
TreeSets and HashSets
lec37.pdf
4/30
Recap
recap.pdf
5/7
Final Exam
9-11AM