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 |