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