| Introduction |
1/8 |
Set up the course jupyter notebooks |
| Why Functional Programming? |
2/8 |
|
| Expressions in OCaml |
2/8,3/8 |
Chapter 2.3 in Cornell CS3110 textbook |
| Functions in OCaml |
3/8,8/8 |
Chapter 2.4 in Cornell CS3110 textbook |
| Datatypes in OCaml |
8/8,9/8 |
Chapter 3 in Cornell CS3110 textbook |
| Pattern Matching in OCaml |
10/8,16/8 |
Chapter 3.1 in Cornell 3110 textbook |
| Higher-order programming in OCaml |
17/8 |
Chapter 4 in Cornell 3110 textbook |
| Lambda Calculus: Syntax |
22/8,23/8 |
Peter Selinger’s lecture notes on lambda calculus Chapter 2, Types and Programming Languages Chapter 5. |
| Lambda Calculus: Semantics |
30/8,31/8,5/9 |
Peter Selinger’s lecture notes on lambda calculus Chapter 2, Types and Programming Languages Chapter 5. |
| Lambda Calculus: Encodings |
5/9,6/9,7/9,12/9 |
Peter Selinger’s lecture notes on lambda calculus Chapter 6, Types and Programming Languages Chapter 5. |
| Lambda Calculus: STLC |
12/9, 13/9 |
Peter Selinger’s lecture notes on lambda calculus Chapter 6 |
| Side effects in OCaml |
13/9, 14/9 |
Chapter 7 in Cornell CS3110 textbook, Chapter on Imperative programming in Real World OCaml |
| Modular Programming in OCaml |
15/9, 20/9 |
Chapter 5 in Cornell CS3110 textbook, Chapter on Modules, Chapter on Functors in Real World Ocaml. |
| Streams, Laziness and Memoization in OCaml |
20/9,21/9,26/9 |
Chapter 8.4,8.5 in Cornell CS3110 textbook, Laziness & Memoization in Real World Ocaml. |
| Prolog Basics |
27/9,3/10 |
Chapter 11 in Programming Languages: Concepts and Constructs by Ravi Sethi. |
| Prolog: Logical Foundations |
3/10,4/10,10/10 |
Chapter 1,2,3.1 in Logic, Programming and Prolog. |
| Lists in Prolog |
10/10,11/10,12/10 |
Chapter 11 in PLCC, Chapter 3 in The Art of Prolog |
| Control in Prolog |
12/10, 16/10, 17/10 |
Chapter 11 in PLCC, Chapter 4 in The Art of Prolog |
| Generate and Test |
18/10, 19/10 |
Chapter 11 in PLCC, Chapter 14.1 in The Art of Prolog |
| Solving a Logic Puzzle |
19/10, 25/10 |
|
| Cuts and Negation |
25/10,26/10,31/10 |
Chapter 11 in PLCC, Chapter 11 in The Art of Prolog |
| Type Inference and Program Synthesis using Prolog |
31/10, 1/11 |
|
| Mutable Data Structures and Difference Lists in Prolog |
2/11, 7/11 |
Chapter 15 in The Art of Prolog |