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
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
Lecture 2: Expressions
Reading: chapter 2
Lecture materials: slides
Recitation: rec2
Recommended exercises: operators, equality, more fun, date fun
Lecture 3: Functions
Reading: chapter 2
Lecture materials: slides
Recitation: rec3
Recommended exercises: fib, fib fast, print int list rec
Lecture 4: Pattern Matching
Reading: chapter 3
Lecture materials: slides
Recitation: rec4
Recommended exercises: concat, patterns, library, powerset, safe hd and tl
Lecture 5: Variants
Reading: chapter 3
Lecture materials: slides
Code: code
Recitation: rec5
Recommended exercises: quadrant, quadrant when, quadrant poly, depth, list max exn
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
Lecture 7: Modules
Reading: chapter 5
Lecture materials: slides
Recitation: rec7
Recommended exercises: binary search tree dictionary, complex encapsulation, fraction
Lecture 8: Functors
Reading: chapter 5
Lecture materials: slides
Recitation: rec8
Recommended exercises: sets, calendar, first after
Lecture 9: Abstraction and Specification
Reading: chapter 6
Lecture materials: slides
Recitation: rec9
Recommended exercises: poly spec, poly impl
Lecture 10: Abstraction Functions and Representation Invariants
Reading: chapter 6
Lecture materials: slides
Recitation: rec10
Recommended exercises: int set rep, association list maps, function maps
Winter Break: no class
Winter Break: no class
Lecture 11: Testing
Data Structures
Lecture 12: Streams and Laziness
Lecture 13: Balanced Trees
Prelim: Details about exams.
Lecture 14: Mutability
Lecture 15: Promises
Lecture 16: Monads
Interpreters
Lecture 17: Interpreters
Lecture 18: OCaml In Industry (Guest lecture)
Spring Break (no joke!): no class
Spring Break: no class
Spring Break: no class
Spring Break: no class
Spring Break: no class
Lecture 19: The Substitution Model
Lecture 20: The Environment Model
Formal Methods
Lecture 21: Functional Programming in Coq
Lecture 22: Logic
Lecture 23: Proofs are Programs
Lecture 24: Induction
Lecture 25: Verification
Advanced Topics
Lecture 26: Type Inference
The End
Lecture 27: Victory Lap
Final Exam: Details about exams.