(or equivalent approved by Director of Studies).
**Aims: **To illustrate how the logical and semantic foundations of programming languages are translated into usable programming languages. To give students practical experience of using a functional programming language.
**Learning Outcomes: **
1) To recognise the connections between mathematical logic and the development of programming languages;
2) To use the notion of reduction in the lambda calculus;
3) To be able to explain how the lambda calculus provides a foundation for the functional family of programming languages;
4) To be able to demonstrate practical competence with the Lisp family of languages, typed functional languages and lazy functional languages;
5) To be able to explain the key features of such languages.
**Skills: ** IT (T, A), Application of Number - inference (T, A).
**Content: ** From lambda calculus to Lisp and functional programming. The Church-Rosser theorem and applicative versus normal order evaluation. Typed lambda calculus and type inference. Combinatory logic. Lazy functional languages. Programming in a functional style. Other calculi.
| |