This seminar course focuses on the principles and practice of purely functional programming. The course features the CakeML language and the Ott tool for defining languages and inductive relations.
Seminar | Topic | Slides and other resources |
---|---|---|
1 | Functional languages, abstract syntax trees, variable binding, and inductive definitions | |
2 | Untyped lambda calculus, operational semantics, combinators, encodings | |
3 | Simply typed lambda calculus and beyond (OCaml Light, CakeML) |
|
4 | Data types | |
5 | From primitive to general recursion | |
6 | Proofs of function properties by structural induction |
|
7 | Function property specification and contracts |
|
8 | Abstract types |
|
9 | Module types and typeclasses |
|
10 | Purely functional data structures, I |
|
11 | Purely functional data structures, II |
|
12 | Research paper presentations | Presented papers: |
13 | Advanced topics: Church's simple types & dependent types |
|
14 | Tool and language demonstrations |