Schedule

Lectures: Tue and Thur 10:10–11:00am, Call Auditorium, starting Tuesday, January 22, 2019.

Discussion sections: Various rooms and times, starting Monday, January 28, 2019.

Level Up: Schedule

Note: this is a tentative schedule that is subject to change, especially for lectures late in the semester.

Functional Programming
Tue, 01/22/19 Lecture 1: Introduction to 3110
Reading: chapter 1, one-page course summary, syllabus, how to install OCaml, tips for success in 3110, asking technical questions
Lecture materials: slides
Recommended exercises: n/a
Thu, 01/24/19 Lecture 2: Expressions
Reading: chapter 2
Lecture materials: slides
Recitation: rec2
Recommended exercises: operators, equality, more fun, date fun
Tue, 01/29/19 Lecture 3: Functions
Reading: chapter 2
Lecture materials: slides
Recitation: rec3
Recommended exercises: fib, fib fast, print int list rec
Thu, 01/31/19 Lecture 4: Pattern Matching
Reading: chapter 3
Lecture materials: slides
Recitation: rec4
Recommended exercises: concat, patterns, library, powerset, safe hd and tl
Tue, 02/05/19 Lecture 5: Variants
Reading: chapter 3
Lecture materials: slides
Code: code
Recitation: rec5
Recommended exercises: quadrant, quadrant when, quadrant poly, depth, list max exn
Thu, 02/07/19 Lecture 6: Higher-order Programming
Reading: chapter 4
Lecture materials: slides
Code: code
Recitation: rec6
Recommended exercises: twice no arguments, repeat, clip, exists, more list fun, tree map
Modular Programming
Tue, 02/12/19 Lecture 7: Modules
Reading: chapter 5
Lecture materials: slides
Recitation: rec7
Recommended exercises: binary search tree dictionary, complex encapsulation, fraction
Thu, 02/14/19 Lecture 8: Functors
Reading: chapter 5
Lecture materials: slides
Recitation: rec8
Recommended exercises: sets, calendar, first after
Mon, 02/18/19 Lecture 9: Abstraction and Specification
Reading: chapter 6
Lecture materials: slides
Code: code
Recitation: rec9
Recommended exercises: poly spec, poly impl
Thu, 02/21/19 Lecture 10: Abstraction Functions and Representation Invariants
Reading: chapter 6
Lecture materials: slides
Code: code
Recitation: rec10
Recommended exercises: int set rep, association list maps, function maps
Mon, 02/25/19 Winter Break: no class
Tue, 02/26/19 Winter Break: no class
Thu, 02/28/19 Lecture 11: Testing
Reading: chapter 7
Lecture materials: slides
Recitation: rec11
Recommended exercises: black box test, set glass box
Data Structures
Tue, 03/05/19 Lecture 12: Streams and Laziness
Reading: chapter 8
Lecture materials: slides
Recitation: rec12
Recommended exercises: more streams, filter, different stream rep, lazy list
Thu, 03/07/19 Lecture 13: Balanced Trees
Reading: chapter 8
Lecture materials: slides
Recitation: rec13
Recommended exercises: efficient traversal, RB draw complete, RB draw insert
Tue, 03/12/19 Prelim: Details about exams.
Thu, 03/14/19 Lecture 14: Mutability
Reading: chapter 8
Lecture materials: slides
Recitation: rec14
Recommended exercises: addition assignment, physical equality, norm
Tue, 03/19/19 Lecture 15: Promises
Reading: chapter 8, LWT Manual
Lecture materials: slides
Code: code
Recitation: rec15
Recommended exercises: promise and resolve, promise and resolve lwt, timing challenges 1-4
Thu, 03/21/19 Lecture 16: Monads
Reading: chapter 8
Lecture materials: slides
Code: code
Recitation: rec16
Recommended exercises: add opt, list monad, trivial monad laws
Tue, 03/26/19 Lecture 17: Memoization
Reading: chapter 8
Lecture materials: slides
Code: code
Recitation: rec17
Recommended exercises:
Thu, 03/28/19 Lecture 18: OCaml In Industry (Guest lecture)
Interpreters
Mon, 04/01/19 Spring Break (no joke!): no class
Tue, 04/02/19 Spring Break: no class
Wed, 04/03/19 Spring Break: no class
Thu, 04/04/19 Spring Break: no class
Fri, 04/05/19 Spring Break: no class
Tue, 04/09/19 Lecture 19: Interpreters
Reading: chapter 9
Lecture materials: slides
Code: code
Recitation: rec19
Recommended exercises: parse, times parsing, pair parsing
Thu, 04/11/19 Lecture 20: The Substitution Model
Reading: chapter 9
Lecture materials: slides
Code: code
Recitation: rec20
Recommended exercises: substitution, application, pair evaluation
Tue, 04/16/19 Lecture 21: Type Systems
Reading: chapter 9
Lecture materials: slides
Code: code
Recitation: rec21
Recommended exercises: subexpression types, typing
Thu, 04/18/19 Lecture 22: Effective OCaml (Guest lecture by Yaron Minsky PhD ‘02)
Tue, 04/23/19 Lecture 23: Environment Model
Reading: chapter 9
Lecture materials: slides
Code: code
Recitation: rec23
Recommended exercises: simple expressions, let and match expressions, closures
Formal Methods
Thu, 04/25/19 Lecture 24: Introduction to Formal Methods
Reading: notes (Coq source), Coq installation, Coq tactics cheatsheet
Lecture materials: slides
Recitation: rec24
Recommended exercises: exercises
Tue, 04/30/19 Lecture 25: Proofs are Programs
Reading: notes (Coq source)
Lecture materials: slides
Recitation: rec25
Recommended exercises: exercises
Thu, 05/02/19 Lecture 26: Verification
Reading: notes (Coq source)
Lecture materials: slides
Recitation: rec26
Recommended exercises: exercises
The End
Tue, 05/07/19 Lecture 28: Victory Lap
Lecture materials: slides
Sat, 05/11/19 Final Exam: Details about exams.