Module Code | CSU44012 |
Module Name | Topics in Functional Programming |
ECTS Weighting [1] | 5 ECTS |
Semester Taught | Semester 1 |
Module Coordinator/s | Glenn Strong |
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Develop sophisticated programs in a high level functional language;
- Critique software designs in terms of functional concepts;
- Contrast the functional style as it is used in several languages;
- 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
Students must submit a meaningful attempt at at least one programming project, four weekly exercises, and one in-class quiz.
Assessment Component | Brief Description | Learning Outcomes Addressed | % of Total | Week Set | Week Due |
Programming Projects | Two programming projects at the mid point and near the end of term. | LO1, LO4 | 60% | Week 4, 8 | Week 6, 12 |
Reading | Written reviews of selected material from the research literature. | LO2, LO3 | 10% | Week 2 | Week 12 |
Quiz | Online quizzes assessing theory knowledge. | LO1, LO2 | 20% | Week 8-12 | Week 8-12 |
Weekly Exercises | Small weekly exercises connected to the lectures. | LO1, LO2, LO3, LO4 | 10% | Week 1-12 | Week 1-12 |
Reassessment Details
Project (100%).
Contact Hours and Indicative Student Workload
Contact Hours (scheduled hours per student over full module), broken down by: | 33 hours |
Lecture | 33 hours |
Laboratory | 0 hours |
Tutorial or seminar | 0 hours |
Other | 0 hours |
Independent Study (outside scheduled contact hours), broken down by: | 92 hours |
Preparation for classes and review of material (including preparation for examination, if applicable) | 33 hours |
Completion of assessments (including examination, if applicable) | 59 hours |
Total Hours | 125 hours |
Recommended Reading List
List of research literature and recommended texts are 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
N/A
Module Website
Link to class for first week (for students who may wish to switch to this module):
Week 1:
- Tuesday 14th September 2021. Welcome lecture (Blackboard Collaborate link)