Skip to main content



Schedule

The notes linked below are required reading, but they are not a substitute for attending lecture and recitation. The lectures and recitation sections are tightly coupled: Lectures will assume knowledge from previous sections, and vice-versa. These notes should be read sequentially (Monday's section, Tuesday's lecture, Wednesday's section, Thursday's lecture, etc.).

Lecture topics and assignment due dates are subject to change.

DATE EVENT TOPIC LINKS
Introduction to Functional Programming
Week 1
01/22/15 Lecture 1 Introduction to CS 3110 [slides] [code
01/24/15 Install Session: noon—8 pm, Upson 315
Week 2
01/26/15 Recitation 1 Introduction to OCaml syntax [code] [notes
01/29/15 Lecture 2 OCaml, semantics, and OCaml semantics [summary
01/28/15 Recitation 2
01/29/15 Lecture 3 Substitution, functions, variants, pattern matching [summary
Week 3
02/02/15 Recitation 3 Testing and debugging [notes
02/03/15 Lecture 4 Tuples and lists [summary
02/04/15 Recitation 4 Datatypes review [notes
02/05/15 Lecture 5 Pattern matching and higher-order functions [summary
Week 4
02/09/15 Recitation 5 Higher-order functions [notes
02/10/15 Lecture 6 Map and fold [slides] [notes] [code
02/11/15 Recitation 6 Folding and tail recursion [notes
02/12/15 Lecture 7 The dynamic environment [slides
Week 5
02/16/15 No class: February Break
02/17/15 No class: February Break
02/18/15 Recitation 7 Evaluation examples [notes
02/19/15 Lecture 8 Closures [slides
Week 6
02/23/15 Recitation 8 Closure examples [notes
Modular Programming
02/24/15 Lecture 9 Modules [last semester's slides
02/25/15 Recitation 9 Functional data structures [notes
02/26/15 Lecture 10 Composing modules [summary] [code
Week 7
03/02/15 Recitation 10 Functor examples [notes] [src
03/03/15 Lecture 11 Functors [summary] [code
03/04/15 Recitation 11 Red/black trees [notes
03/05/15 Lecture 12 Abstraction functions and representation invariants [summary] [code
Week 8
03/09/15 Recitation 12 Prelim 1 review
03/10/15 No class: Study for prelim 1
03/10/15 Prelim 1, 5:30–7:00 and 7:30–9:00 pm, Ives 305
03/11/15 No class: Recitation canceled
Imperative Programming
03/12/15 Lecture 13 Imperative features [last semester's notes
Week 9
03/16/15 Recitation 13 Prelim 1 redux, git [git tutorial
03/17/15 Lecture 14 Hashing [slides] [notes
03/18/15 Recitation 14 Functional arrays [notes
Reasoning about Programs
03/19/15 Lecture 15 Efficiency [slides] [notes
Week 10
03/23/15 Recitation 15 Recurrences [notes
03/24/15 Lecture 16 Amortized analysis [slides] [notes
03/25/15 Recitation 16 Examples of amortized analysis [notes
03/26/15 Lecture 17 Verification [slides] [notes
Week 11
03/30/15 – 04/02/15 No class: Spring Break
Week 12
04/06/15 Recitation 17 Examples of verification [notes
Concurrent Programming
04/07/15 Lecture 18 Intro to async [notes] [documentation
04/08/15 Recitation 18 Async examples [notes] [sample problems
04/09/15 Lecture 19 Ivars [notes
Week 13
04/13/15 Recitation 19 Networking [notes
04/14/15 Lecture 20 Asynchronous queue [notes
04/15/15 Recitation 20 Async_parallel [notes] [overview
Advanced Topics
04/16/15 Lecture 21 Monads [notes
Week 14
04/20/15 Recitation 21 Prelim 2 review
04/21/15 No class: Study for prelim 2
04/21/15 Prelim 2, 5:30–7:00 and 7:30–9:00 pm, Uris G01
04/22/15 No class: Recitation canceled
04/23/15 Lecture 22 The expression problem [slides] [code
Week 15
04/27/15 No class: Charter Day
04/28/15 Lecture 23 Object encodings [slides] [code
04/29/15 Recitation 22 Lambda calculus [notes
04/30/15 Lecture 24 Dynamic dispatch [slides] [code
Week 16
05/04/15 Recitation 23 TA's choice
THE END
05/05/15 Lecture 25 Victory lap [slides
05/06/15 No class: Recitation canceled
Finals
05/17/15 Final Exam, 2:00–4:30 pm, Olin 155