CM20256: Functional programming
[Page last updated: 02 August 2022]
Academic Year: | 2022/23 |
Owning Department/School: | Department of Computer Science |
Credits: | 6 [equivalent to 12 CATS credits] |
Notional Study Hours: | 120 |
Level: | Intermediate (FHEQ level 5) |
Period: |
- Semester 2
|
Assessment Summary: | CW 50%, EX 50% |
Assessment Detail: |
- Coursework (CW 50%)
- Exam (EX 50%)
|
Supplementary Assessment: |
- Like-for-like reassessment (where allowed by programme regulations)
|
Requisites: |
Before taking this module you must take CM10228 OR take MA10265 OR take MA10275 OR take MA10276 OR take XX10190
|
Learning Outcomes:
| On completion of this unit, students will be able to:
1. Define and explain the syntax and semantics of the lambda-calculus, and its role as a model of computation.
2. Demonstrate the difference between reduction orders and explain their relationship with call-by-name, call-by-value and call-by-need evaluation.
3. Define and explain the simply-typed lambda calculus, Hindley-Milner polymorphism, and type inference.
4. Write programs over structured datatypes in a typed higher-order functional programming language.
|
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.
|
Skills: | Use of IT (T/F,A), Problem Solving (T/F,A).
|
Content: | The lambda calculus, syntax and semantics; free and bound variables; alpha conversion; beta and eta reduction. Normal form subject to a reduction scheme. Reduction order: normal and applicative; Y combinator. Programming in the lambda-calculus: Church numerals and operations (addition, subtraction, multiplication), Booleans, recursion via fixed points. The diamond property. Church-Rosser theorem.
Typed lambda calculus. Hindley-Milner polymorphism and type checking and type inference.
Programming in a typed higher-order functional programming language (e.g. Haskell.) Types and type constructors: product, sum and function types. Recursive types, especially lists. Programming with map and fold. Call-by-name, call-by-value and call-by-need; graph reduction. Relationship of functional programming to other programming styles; integration of effects in functional programming languages.
|
Programme availability: |
CM20256 is Compulsory on the following programmes:
Department of Computer Science
- USCM-AFB06 : BSc(Hons) Computer Science (Year 2)
- USCM-AAB07 : BSc(Hons) Computer Science with Study year abroad (Year 2)
- USCM-AKB07 : BSc(Hons) Computer Science with Year long work placement (Year 2)
- USCM-AFB20 : BSc(Hons) Computer Science and Mathematics (Year 2)
- USCM-AAB20 : BSc(Hons) Computer Science and Mathematics with Study year abroad (Year 2)
- USCM-AKB20 : BSc(Hons) Computer Science and Mathematics with Year long work placement (Year 2)
- USCM-AFM01 : MComp(Hons) Computer Science (Year 2)
- USCM-AAM02 : MComp(Hons) Computer Science with Study year abroad (Year 2)
- USCM-AKM02 : MComp(Hons) Computer Science with Year long work placement (Year 2)
- USCM-AFM14 : MComp(Hons) Computer Science and Mathematics (Year 2)
- USCM-AAM14 : MComp(Hons) Computer Science and Mathematics with Study year abroad (Year 2)
- USCM-AKM14 : MComp(Hons) Computer Science and Mathematics with Year long work placement (Year 2)
CM20256 is Optional on the following programmes:
Department of Mathematical Sciences
- USMA-AFB15 : BSc(Hons) Mathematical Sciences (Year 2)
- USMA-AFB15 : BSc(Hons) Mathematical Sciences (Year 3)
- USMA-AAB16 : BSc(Hons) Mathematical Sciences with Study year abroad (Year 2)
- USMA-AAB16 : BSc(Hons) Mathematical Sciences with Study year abroad (Year 4)
- USMA-AKB16 : BSc(Hons) Mathematical Sciences with Year long work placement (Year 2)
- USMA-AKB16 : BSc(Hons) Mathematical Sciences with Year long work placement (Year 4)
- USMA-AFB13 : BSc(Hons) Mathematics (Year 2)
- USMA-AFB13 : BSc(Hons) Mathematics (Year 3)
- USMA-AAB14 : BSc(Hons) Mathematics with Study year abroad (Year 2)
- USMA-AAB14 : BSc(Hons) Mathematics with Study year abroad (Year 4)
- USMA-AKB14 : BSc(Hons) Mathematics with Year long work placement (Year 2)
- USMA-AKB14 : BSc(Hons) Mathematics with Year long work placement (Year 4)
- USMA-AFB01 : BSc(Hons) Mathematics and Statistics (Year 3)
- USMA-AAB02 : BSc(Hons) Mathematics and Statistics with Study year abroad (Year 4)
- USMA-AKB02 : BSc(Hons) Mathematics and Statistics with Year long work placement (Year 4)
- USMA-AFB20 : BSc(Hons) Mathematics, Statistics, and Data Science (Year 2)
- USMA-AAB20 : BSc(Hons) Mathematics, Statistics, and Data Science with Study year abroad (Year 2)
- USMA-AKB20 : BSc(Hons) Mathematics, Statistics, and Data Science with Industrial Placement (Year 2)
- USMA-AFB05 : BSc(Hons) Statistics (Year 3)
- USMA-AAB06 : BSc(Hons) Statistics with Study year abroad (Year 4)
- USMA-AKB06 : BSc(Hons) Statistics with Year long work placement (Year 4)
- USMA-AFM14 : MMath(Hons) Mathematics (Year 2)
- USMA-AFM14 : MMath(Hons) Mathematics (Year 3)
- USMA-AAM15 : MMath(Hons) Mathematics with Study year abroad (Year 2)
- USMA-AKM15 : MMath(Hons) Mathematics with Year long work placement (Year 2)
- USMA-AKM15 : MMath(Hons) Mathematics with Year long work placement (Year 4)
|
Notes: - This unit catalogue is applicable for the 2022/23 academic year only. Students continuing their studies into 2023/24 and beyond should not assume that this unit will be available in future years in the format displayed here for 2022/23.
- Programmes and units are subject to change in accordance with normal University procedures.
- Availability of units will be subject to constraints such as staff availability, minimum and maximum group sizes, and timetabling factors as well as a student's ability to meet any pre-requisite rules.
- Find out more about these and other important University terms and conditions here.
|