|Module Name||Topics in Functional Programming|
|ECTS Weighting||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:
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
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 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 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%||4,8||6,12|
|Reading||Written reviews of selected material from the research literature||LO2, LO3||10%||2||12|
|Quiz||Online quizzes assessing theory knowledge||LO1, LO2||20%||8-12||8-12|
|Weekly exercises||Small weekly exercises connected to the lectures||LO1, LO2, LO3, LO4||10%||1-12||1-12|
Students must submit a meaningful attempt at at least one programming project, four weekly exercises, and one in-class quiz.
Contact Hours and Indicative Student Workload
|Contact Hours (scheduled hours per student over full module), broken down by:||33 hours|
|Tutorial or seminar||0 hours|
|Independent study (outside scheduled contact hours), broken down by:||33 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 circulated on Blackboard in week 1.
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.
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.
- Tuesday 14th September 2021.Welcome lecture (Blackboard Collaborate link)