CIS 120: Programming Languages and Techniques I
Spring 2016

CIS120 Schedule

Lecture screencasts can be found at the (PennKey protected) CIS 120 mediasite page.
Date Topic Slides Code Reading
1/13
Introductions, Program Design
No recitations this week!
lec01.pdf
assert.ml
tickets.ml
Syllabus
Chapter 1
Ocaml/Eclipse set up
1/15
Value-Oriented Programming lec02.pdf
Chapter 2
OCaml style guide
1/18
No Class: MLK Day
1/20
Lists and Recursion lec03.pdf assert.ml
email.ml
Chapter 3
1/22 Tuples and Lists lec04.pdf Chapter 4
1/25 Nested Patterns lec05.pdf zip.ml Chapter 5
1/26
HW01 Finger Exercises due
1/27
Binary Trees lec06.pdf
trees.ml
treeExamples.ml
Chapters 6 and 7
1/29
Binary Search Trees lec07.pdf
Chapters 7
2/1 BST delete and Generics lec08.pdf
bst.ml
Add period ends
Chapters 8 and 9
2/2
HW02 Computing Human Evolution due
2/3
Higher-order Functions lec09.pdf
transform.ml Chapter 9
2/5
Abstract Types: Sets lec10.pdf
Chapter 10
2/8
Abstract Types: Finite maps lec11.pdf
finiteMap.ml Chapters 10
2/9
HW03 Sets, Abstraction, and Higher-Order Functions due
2/10
Finite Maps, Partiality and Options lec12.pdf
finiteMapOptions.ml Chapter 11
2/12*
The Abstract Stack Machine lec13.pdf
Chapters 15
2/15
Unit, Commands, and Mutable Records lec14.pdf mutable.ml Chapters 12, 13, 14
2/16
Midterm 1
Time: 6:15-8:15PM
Location by last name:
A - Schwartz: MEYH B1
Shah - Z: DRLB A8
Practice exams:
Fall 2015: blank | solution
Spring 2015: blank | solution
Fall 2014: blank | solution
Spring 2014: blank | solution
Fall 2013: blank | solution
Spring 2013: blank | solution
Actual exam:
blank | solution
2/17
Queues lec15.pdf Chapter 16
2/19
Queues II lec16.pdf
Drop period ends Chapter 16
2/22
Iteration and Tail Recursion lec17.pdf
q.ml Chapter 16
2/23
HW04 Mutable Queues due
2/24
Closures and "Objects" lec18.pdf Chapter 17
2/26
GUI Design: drawing lec19.pdf simpleWidget.mli
simpleWidget.ml
swdemo.ml
Chapter 18
2/29
GUI Design: events lec20.pdf onoff_layout.ml
onoff_handle.ml
Chapter 18
3/2
GUI Design: Lightbulb Demo lec21.pdf onoff_notifier.ml Chapter 18
3/3
HW05 GUI Library and Paint due
3/4
CLASS CANCELLED!
3/7
Spring Break!
3/9
Spring Break!
3/11
Spring Break!
3/14
Connecting OCaml to Java lec22.pdf Chapters 19 and 20
3/16
Java Arrays lec23.pdf ArrayExamples.java
ArrayExamplesTest.java
Chapter 21
3/18
Java ASM lec24.pdf
Chapter 22
3/21
Subtypes and Extension lec25.pdf
Shapes.zip
Chapter 23
3/22
Midterm 2
Time: 6:15-8:15PM
Location by last name:
A - Schwartz: MEYH B1
Shah - Z: DRLB A8
Practice Exams:
Fall 2015: blank | solution
Spring 2015: blank | solution
Fall 2014: blank | solution
Spring 2014: blank | solution
Actual exam:
blank | solution
3/23
Inheritance and Dynamic Dispatch lec26.pdf
Chapter 24
3/25
Generics and Collections lec27.pdf
Withdraw Period Ends Chapter 25
3/28*
Guest Lecture: Yaron Minsky, Jane Street
Effective OCaml
NYT about Jane Street
3/29*
HW06 Pennstagram due
3/30*
Equality and Comparable lec28.pdf Chapter 26
4/1*
Enums, Iterators lec29.pdf
Chapter 25
4/4
Exceptions lec30.pdf
Chapter 27
4/5
HW07 PennPals due
4/6
IO lec31.pdf
Image.java
mandrill.pgm
Chapter 28
4/8
Histogram Demo lec32.pdf
Histogram.java
WordScanner.java
WordScannerTest.java
problem.txt
4/11
Swing I: Drawing and Event Handling lec33.pdf
DrawingCanvas.java
DrawingCanvasMain.java
OnOff.java
Chapter 29
4/12
HW08 SpellCheck due
4/13
Swing II: Layout and Inner Classes lec34.pdf LayoutDemo.java
Chapter 30
4/15 CLASS CANCELLED!
4/18
Swing III: Game Demo lec35.pdf Chapter 31
4/19
HW09 Checkpoint due
4/20
Resizable Arrays lec36.pdf
ResArray.java
ResArrayTest.java
Chapter 32
4/22
Encapsulation, Hashing and Collections lec37.pdf
HashExample.java
HashTest.java
4/25
Bonus lecture: Code is Data bonus.pdf Quine.java
4/26
HW09 Make Your Own Game due
4/27
Recap lec38.pdf
5/9
Final Exam
Time: 9-11AM
Location:
  • LRSM AUD [A - Edson]
  • TOWN 100 [Efremkina - Mendivil]
  • LEVH 101 [Mitchnick - Taitz]
  • SKIR AUD [Tallini - Z]
Practice Exams:
Fall 2015: blank | solution
Fall 2014: blank | solution
Fall 2013: blank | solution
Spring 2013 blank | solution
Fall 2012 : blank | solution
* Dates when Dr. Weirich will be away. Lecture covered by guest lecturer.