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

Presentation for CSU44012

Module Learning Outcomes

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

  1. Develop sophisticated programs in a high level functional language;
  2. Critique software designs in terms of functional concepts;
  3. Contrast the functional style as it is used in several languages;
  4. 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 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%Week 4, 8Week 6, 12
ReadingWritten reviews of selected material from the research literature.LO2, LO310%Week 2Week 12
QuizOnline quizzes assessing theory knowledge.LO1, LO220%Week 8-12Week 8-12
Weekly ExercisesSmall weekly exercises connected to the lectures.LO1, LO2, LO3, LO410%Week 1-12Week 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
Lecture33 hours
Laboratory0 hours
Tutorial or seminar0 hours
Other0 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 Hours125 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

Blackboard

Link to class for first week (for students who may wish to switch to this module):

Week 1: