CIS 120: Programming Languages and Techniques I
Home
Syllabus
Labs
Exams
Lectures
Homework
Staff
Calendar
FAQ
Tutoring
Piazza Discussion
CIS 120 Resources
CIS 1xx Resources
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