layout | title | permalink |
---|---|---|
page |
Schedule |
/schedule/ |
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 | 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 |
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 |