CSU44012 – Topics in Functional Programming

Module CodeCSU44012
Module Name Topics in Functional Programming
ECTS Weighting[1]5 ECTS
Semester taughtSemester 1
Module Coordinator/s  Glenn Strong

Link to Presentation Introducing Module CSU44012

Module Learning Outcomes

On successful completion of this module, students will be able to:

LO1. Develop sophisticated programs in a high level functional language
LO2. Critique software designs in terms of functional concepts
LO3. Contrast the functional style as it is used in several languages
LO4. Design programs using purely functional paradigms

Module Content

Course content covers both techniques and technologies. Topics will include:

Designing programs with higher-order functions (functors and monad transformers)
Domain Specific Languages in functional programming Monads and Arrows for programming
Type systems for functional languages; basics of type inference
Generalized Abstract Data Types; introduction to dependent types
I/O and State handling
Functional debugging
Efficiency considerations
Functional programming for web and concurrent systems

Teaching and learning Methods

Teaching is via lectures and in-class presentations and discussion, and online delivery of content through Blackboard.

Assessment Details

Assessment ComponentBrief Description Learning Outcomes Addressed% of totalWeek setWeek Due
Programming projectsTwo programming projects at the mid point and near the end of term.LO1, LO460%4,86,12
ReadingWritten reviews of selected material from the research literatureLO2, LO310%212
QuizOnline quizzes assessing theory knowledgeLO1, LO220%8-128-12
Weekly exercisesSmall weekly exercises connected to the lecturesLO1, LO2, LO3, LO410%1-121-12

Students must submit a meaningful attempt at at least one programming project, four weekly exercises, and one in-class quiz.

Reassessment Details

Project (100%)

Contact Hours and Indicative Student Workload

Contact Hours (scheduled hours per student over full module), broken down by: 33 hours
Lecture33 hours
Laboratory0 hours
Tutorial or seminar0 hours
Other0 hours
Independent study (outside scheduled contact hours), broken down by:33 hours
Preparation for classes and review of material (including preparation for examination, if applicable33 hours
completion of assessments (including examination, if applicable)59 hours
Total Hours125 hours

Recommended Reading List

List of research literature and recommended texts circulated on Blackboard in week 1.

Module Pre-requisites

Prerequisite modules: CSU34016

Other/alternative non-module prerequisites: A reasonable grounding in the programming language Haskell (experience with similar languages such as ML) is required.

Module Co-requisites


Module Website


Links to class for first two weeks (for students who may wish to switch to this module):

This section will have links to the Blackboard content from the first two weeks, for any students who do not have access to Blackboard in the early part of the term.

Week 1: