This module exposes students to state of the art functional programming languages and and their mathematical foundations in the lambda calculus and type theory. Students can expect to develop advanced functional programming skills and awareness of experimental programming languages.
Learning Outcomes
By the end of the module students should be able to:
be able to formally prove the correctness of complex programs
understand and program with advanced type systems (e.g. dependent or linear)
be aware of and apply advanced idioms in functional programming
form connections with logic and the foundations of mathematics
demonstrate an awareness of the current literature in this area