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 |
30/09, 06/10 |
Chapter 11 in PLCC |
18 |
Logical Foundations |
06/10, 07/10, 09/10 |
Chapter 1, 2, 3.1 in Logic, Programming and Prolog 2ed |
19 |
Solving a Logic Puzzle |
09/10 |
|
20 |
Programming with Lists |
12/10, 13/10, 14/10 |
Chapter 11 in PLCC, Chapter 3 in AoP |
21 |
Control in Prolog |
14/10, 16/10, 19/10 |
Chapter 11 in PLCC, Chapter 4 in AoP |
22 |
Mutable(?) data structures |
19/10, 20/10 |
Chapter 11 in PLCC, Chapter 15 in AoP |
23 |
Generate and Test |
20/10, 21/10 |
Chapter 11 in PLCC, Chapter 14.1 in AoP |
24 |
Cuts and Negation |
21/10, 23/10 |
Chapter 11 in PLCC, Chapter 11 in AoP |
25 |
Countdown, Type Inference and Program Synthesis |
26/10 |
|
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 |