This module is not currently running in the selected year. The information shown below is for the academic year that the module was last running in, prior to the year selected.
2016/17 Undergraduate Module Catalogue
COMP3941 Functional Programming
10 creditsClass Size: 40
Module manager: Prof David Duke
Email: D.J.Duke@leeds.ac.uk
Taught: Semester 1 (Sep to Jan) View Timetable
Year running 2016/17
Pre-requisite qualifications
None, but students would benefit with familiarity with the following concepts from discrete mathematics / programming foundations: types, tuples, (mathematical) functions, recursion, induction.This module is mutually exclusive with
COMP5941M | Functional Programming |
This module is not approved as a discovery module
Module summary
* foundations: the lambda calculus, redexes, evaluation order* basic concepts: functional abstractions and applications* simple and compound types* user-defined inductive data types and type classes* function definition* higher-order functions* higher-order types and Haskell type classes including Monad and Applicative* tools for Haskell development including modules and CabalObjectives
This module examines the paradigm of programming with (pure) functions in software development, focussing on the Haskell language and its implementation technology. Similar concepts underpin other modern languages, including ML, Scala, JavaScript and Clojure. Indeed, concepts from functional programming are now found in C++. Functional programmers are in demand by industry: Haskell for example has been adopted by major companies (e.g. Facebook, and a number of banks) and is used by a range of specialist software developers in applications from web development to secure languages for programming embedded devices. In research, functional languages are the major laboratories for innovation in programming technologies including type theory, parallelism, software correctness, and security.Learning outcomes
The module will:
* review the formal foundations of functional programming;
* equip students with an understanding of the major concepts in modern functional programming, including inductive data types, equational definitions, higher-order functions and higher-order types;
* introduce students to advanced features specific to the Haskell language, including the monad, applicative, and traversable type classes, and support for parallel programming;
* provide practical experience of software development in a pure functional language.
Skills outcomes
* rigorous use of software tools (repositories, testing, documentation)
* professional software development
Syllabus
Students will understand the foundations of functional programming, and be able to write programs using basic to intermediate features of the Haskell language. The level of foundational knowledge will allow students to transfer insight into functional paradigm to programming in related languages. They will also have further exposure to the tool ecosystem that is essential to software development practice.
Teaching methods
Delivery type | Number | Length hours | Student hours |
Practical Demonstration | 20 | 1.00 | 20.00 |
Class tests, exams and assessment | 1 | 1.00 | 30.00 |
Lecture | 15 | 1.00 | 15.00 |
Private study hours | 35.00 | ||
Total Contact hours | 65.00 | ||
Total hours (100hr per 10 credits) | 100.00 |
Opportunities for Formative Feedback
Weekly practical classes will provide rapid feedback on students’ ability to deploy the new concepts covered in that week. Although lectures will include presentation of some concept, a significant proportion of each “lecture” session will be critical discussion, again providing further insight into level of understanding. These sessions will also include short MCQs as formative assessment.Methods of assessment
Coursework
Assessment type | Notes | % of formal assessment |
Assignment | Programming task | 20.00 |
Assignment | Programming task | 30.00 |
Total percentage (Assessment Coursework) | 50.00 |
This module is re-assessed by Lab exam only.
Exams
Exam type | Exam duration | % of formal assessment |
Unseen exam | 3 hr 00 mins | 50.00 |
Total percentage (Assessment Exams) | 50.00 |
This module is re-assessed by Lab exam only.
Reading list
The reading list is available from the Library websiteLast updated: 15/03/2017
Browse Other Catalogues
- Undergraduate module catalogue
- Taught Postgraduate module catalogue
- Undergraduate programme catalogue
- Taught Postgraduate programme catalogue
Errors, omissions, failed links etc should be notified to the Catalogue Team.PROD