Functional Programming

Graham Hutton, University of Nottingham


This part of the programming paradigms module focuses on teaching the basic principles of functional programming using Haskell. There are four timetabled lectures and one lab session each week. Which of these will be used for Haskell are detailed below.


Lectures this year are pre-recorded to enhance their quality, but will be played to students taking the module 'as live' during the weekly lecture slots. The recordings will be made freely available online after each lecture. However, it is strongly recommended that you join the 'live' lecture sessions, both to help structure your time and to be able to ask questions.


The Haskell coursework for the module comprises a series of one-page exercise sheets and an extended programming exercise, and will be released on moodle at appropriate points.



      Book 2e Cover


  1. Course overview + Haskell demo
  2. Introduction
  3. First steps
  4. Types and classes
  5. Defining functions
  6. List comprehensions
  7. Recursive functions
  8. Exercises on recursion
  9. Higher-order functions
  10. How to think recursively
  11. Declaring types and classes
  12. The countdown problem
  13. Interactive programming
  14. Exercises on interaction
  15. Lazy evaluation
  16. Course wrapup

Additional material: