*Last updated on 29th January 2015*

**
Graham HuttonSchool of Computer ScienceUniversity of Nottingham
**

The aim of this module is to teach the basic principles of functional programming, using the modern functional language Haskell. Broadly speaking, functional programming is a style of programming in which the primary method of computation is the application of functions to arguments. Among other features, functional languages offer a compact notation for writing programs, powerful abstraction methods for structuring programs, and a simple mathematical basis that supports reasoning about programs.

Timetable:

- Lecture: Monday, 17.00 - 18.00, LT2 (Exchange)
- Lecture: Thursday, 11.00 - 12.00, B52 (Business South)
- Practical: Monday, 09.00 - 11.00, A32 (Computer Science)

- Exercise Sheet 1 (deadline: Monday 9th Feburary 2015, 11am)

Textbook:

Lecture notes:

- Chapter 0 - Module introduction
- Chapter 1 - Introduction
- Chapter 2 - First steps
- Chapter 3 - Types and classes
- Chapter 4 - Defining functions
- Chapter 5 - List comprehensions
- Chapter 6 - Recursive functions
- Chapter 7 - Higher-order functions
- Chapter 9 - Interactive programs
- Chapter 10 - Declaring types and classes
- Chapter 11 - The countdown problem
- Chapter 12 - Lazy evaluation

- Module moodle page (internal version of this page)
- Haskell platform (the standard compiler and interpreter)
- Standard prelude (some useful library functions)
- Hoogle (for searching the libraries)
- Haskell home page (for all things Haskell)