CS260 - Functional Thinking
TIMETABLE | TEACHING MATERIAL |
Credits | 10 |
Level | 2 |
Semester | Semester 2 |
Availability | Core: BSc Hons Computer Science & BSc Hons Software Engineering |
Prerequisites | None |
Learning Activities Breakdown | Lectures: 10 of 1 hour each - 10 hours total Practical / Lab: 10 of 2 hours each - 20 hours total Homework / Private Study: 70 hours Total hours activity: 100 hours |
Assessment | The class will be assessed by coursework which will consist of weekly multiple choice questions, an assessed programming exercise and a class test. The coursework will be set using a modern functional programming language, such as Haskell. Feedback will be delivered to students both electronically and in person during labs. Assignments will be assessed electronically and feedback delivered quickly to aid learning. |
Lecturer | Alasdair Lambert, Jules Hedges |
Aims and Objectives
To introduce the core concepts and methods of modern functional programming, serving as an introduction to our third year class on this topic.
Learning Obj 1 : to understand basic functional programming concepts: inductive datatypes, pattern matching, structural recursion
Learning Obj 2 : to understand how to transform and interpret languages of expressions
Learning Obj 3 : to understand functional data structures, e.g. search trees
Learning Obj 4 : to understand abstraction of type parameters and common interfaces
Learning Outcomes
Syllabus
- functions and types; functional composition
- inductive datatypes, pattern matching, structural recursion
- transforming and interpreting languages of expressions
- functional data structures, e.g., search trees
- representation of simple computational effects, e.g. failure by Maybe and choice by lists
- abstraction of type parameters (parametric polymorphism)
- abstraction of common interfaces, e.g., Eq, Ord, Monoid
Recommended Reading
This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.
There are a variety of books that support this material: Learn You a Haskell for Great Good! by Miran Lipovaca Programming in Haskell by Graham Hutton Thinking Functionally with Haskell by Richard Bird. This is not a core text and is available in the University Library.
Last updated: 2023-03-13 17:37:59