Department of Computer Science, Unit Catalogue 2007/08 |
CM20167 Programming III: functional programming |
Credits: 6 |
Level: Intermediate |
Semester: 1 |
Assessment: CW 25%, EX 75% |
Requisites: |
Before taking this unit you must (take CM10134 and take CM10135) or take CM10140 |
(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. |