Course Syllabus for

Functional Programming

EDAN40F, 7.5 credits

Valid from: Spring 2017
Decided by: Professor Thomas Johansson
Date of establishment: 2017-03-22

General Information

Division: Computer Science (LTH)
Course type: Course given jointly for second and third cycle
The course is also given at second-cycle level with course code: EDAN40
Teaching language: Swedish


The course gives an insight into how the functional programming often offers a possibility to write shorter and easier-to-understand programs than using the traditional imperative or object-oriented approaches.


Knowledge and Understanding

For a passing grade the doctoral student must

Competences and Skills

For a passing grade the doctoral student must

Judgement and Approach

For a passing grade the doctoral student must have learnt to appreciate the role of program code as a communication medium between people

Course Contents

The philosophy of functional languages. The programming language Haskell. Language constructs and idioms. Higher-order functions. Lazy evaluation and infinite data structures. Monads and monadic computations. Polymorphic type systems and type classes. Type analysis and type inference

Course Literature

Simon Thompson: Haskell, The Craft of Functional Programming. Addison Wesley, 2011, ISBN: 978-0-201-88295-7. 3rd edition. Recommended reference. Graham Hutton: Programming in Haskell. Cambridge University Press, 2007, ISBN: 978-0-521-69269-4. Recommended reference. Bryan O'Sullivan, John Goerzen and Don Stewart: Real World Haskell. O'Reilly, 2008, ISBN: 978-0-596-51498-3. Recommended reference.

Instruction Details

Types of instruction: Lectures, laboratory exercises

Examination Details

Examination format: Written exam
Grading scale: Failed, pass

Admission Details

Assumed prior knowledge: EDAA01 Programming - Second Course or EDAA30 Programming in Java - Second Course

Course Occasion Information

Contact and Other Information

Course coordinators:
Web page:

Complete view