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 |