Lectures Topic Dates Comments
1 Why PL? 03/08 Recommended exercise: Set up the course jupyter notebook.
2 Why FP? 04/08  
3 Expressions 04/08, 05/08 Chapter 2 CS3110 textbook
4 Functions 05/08, 10/08, 11/08 Chapter 2 CS3110 textbook
5 Datatypes 12/08, 14/08 Chapter 3 in CS3110 textbook, Further reading: Hillel Wayne, Constructive vs Predicative Data
6 Pattern Matching 14/08, 17/08, 18/08, 19/08 Chapter 3 in CS3110 textbook
7 Higher-order programming 19/08, 21/08 Chapter 4 in CS3110 textbook
8 Lambda Calculus: Syntax 21/08, 24/08, 25/08 TAPL Chap. 5, Peter Selinger’s lecture notes on lambda calculus Chap. 2
9 Lambda Calculus: Semantics 25/08, 26/08, 28/08 TAPL Chap. 5, Peter Selinger’s lecture notes on lambda calculus Chap. 2
10 Lambda Calculus: Encodings 28/08, 31/08, 01/09 TAPL Chap. 5, Peter Selinger’s lecture notes on lambda calculus Chap. 6
11 Lambda Calculus: STLC 01/09, 02/09, 04/09 TAPL Chap. 9, Peter Selinger’s lecture notes on lambda calculus Chap. 6
12 (Side) Effects 07/09, 08/09 Chapters 8.7 to 8.16 in CS3110 Textbook, Imperative Programming, Real World OCaml
13 Modular Programming 09/09, 11/09 Chapter 5 in CS3110 Textbook, Modules and Functors, Real World OCaml
14 Streams, Laziness and Memoization 14/09, 15/09, 16/09, 18/09 Chapters 8.1 to 8.4, 8.27 in CS3110 Textbook, Laziness & Memoization, Real World OCaml
15 Monads 18/09, 21/09, 22/09, 23/09 Chapters 8.22 to 8.26 in CS3110 Textbook, Cambridge Computer Lab: AFP: Monads
16 GADTs 23/09, 25/09, 28/09, 29/09 UCam AFP Course: GADTs
17 Prolog Basics   Chapter 11 in PLCC
18 Logical Foundations   Chapter 1, 2, 3.1 in Logic, Programming and Prolog 2ed
19 Solving a Logic Puzzle    
20 Programming with Lists   Chapter 11 in PLCC, Chapter 3 in AoP
21 Control in Prolog   Chapter 11 in PLCC, Chapter 4 in AoP
22 Mutable(?) data structures   Chapter 11 in PLCC, Chapter 15 in AoP
23 Generate and Test   Chapter 11 in PLCC, Chapter 14.1 in AoP
24 Cuts and Negation   Chapter 11 in PLCC, Chapter 11 in AoP
25 Countdown, Type Inference and Program Synthesis    
26 Graph Search   Chapter 14.2 in AoP
27 Database Programming    
28 Sudoku & Constraint Logic Programming   Prolog WikiBook on CLP, SWI Prolog docs on CLP


The lectures are available as interactive notebooks. They are best accessed using docker container whose instructions are here.

Tutorials Topic Dates Comments
1 Jupyter notebook setup 07/08  
2 Q&A 14/09