Skip to main content

Trinity College Dublin, The University of Dublin

Menu Search

Module DescriptorSchool of Computer Science and Statistics

Module CodeCS4012
Module NameTopics in Functional Programming
Module Short Title
Semester Taught
Contact Hours

Lecture hours: 22
Lab hours: 0
Tutorial hours: 11
Total hours: 33

Module PersonnelGlenn Strong
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
Learning Aims

This course builds on CS3012 which introduced the fundamental concepts of functional programming. In CS4012 we will take an in-depth look at more advanced topics in functional programming and discuss some current research directions in the field.

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
Recommended Reading List
  • Bryan O’Sullivan, Don Stewart, and John Goerzen, Real World Haskell (Paperback, O’Reilly Press, November 2008) available online
  • Richard Bird, Introduction to Functional Programming using Haskell, 2nd edition
    (Prentice Hall Press, 1998, 460 pp.)
  • Hutton, Graham. Programming in Haskell, 2nd edition (Cambridge University Press, 2016)
  • Selected research papers will be assigned as reading for discussion sessions
Module Prerequisites

CS3016 Functional Programming

Assessment Details

30% coursework, 70% examination

Module Website
Academic Year of Data