COMPGC16 - Functional Programming
This database contains the 2017-18 versions of syllabuses. Syllabuses from the 2016-17 session are available here.
Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).
|Code||COMPGC16 (Also taught as: COMP3011)|
EITHER the completion of 2 years undergraduate level study in pure Computer Science at UCL
OR the completion of the first term of the MSc Computer Science curriculum at UCL
OR the following prior study at university undergraduate (Majors) or postgraduate level:
|Taught By||Chris Clack (100%)|
This course explores the functional programming paradigm and the implementation technology for functional programming languages. It aims to develop a broad understanding of the functional programming style and recursive programming techniques using the language Miranda, together with an understanding of implementation issues that are relevant not only to functional languages but also to other systems that require automatic dynamic memory management.
To be able to:
- Classification of Programming Languages
- Distinctive Features of Functional Programming Languages
- Differences between Haskell and Miranda
The Lambda Calculus and Combinators
- Versions of the Lambda Calculus - syntax and semantics
- Reduction orders, strong normalisation
- Combinators - computationally complete sets
- A brief introduction to Hindley-Milner type inference
- Programming Environment
- Higher-Order Functions
- User-Defined Types
- Recursive Programming Techniques
Introduction to Implementation Techniques
- Strict Evaluation and the SECD Machine
- Lazy Evaluation and Graph Reduction
- The Need for Automatic Memory Management
Automatic Memory Management
- Memory Allocation and Garbage Collection
- Garbage Collection Techniques
Method of Instruction
The course has the following assessment components:
- Written Examination (2.5 hours, 100%)
To pass this course, students must:
- Obtain an overall pass mark of 50% for the exam component.
Reading list available via the UCL Library catalogue.