Skip to topic | Skip to bottom


Main.FunctionalProgrammingCourser1.6 - 05 Feb 2013 - 14:48 - GeorgiosGousios

Start of topic | Skip to actions

MSc Course IN4355: Functional Programming

A Practical Introduction to Functional Programming


The aim of this module is to teach the principles of pure functional programming, and the corresponding Category Theoretical principles, 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. Many of the advanced techniques in modern functional languages, such as monads and catamorphisms, are closely based on principles from category theory such as functors, initial algebras, and of course monads and Kleisli categories.

Course Organization

This course is based on the highly popular book and accompanying courses by Graham Hutton ( with the additional twist that we use the abstract concepts from the lectures to build Cloud applications in mainstream imperative languages such as JavaScript, Dart, C#, and Java. This is to emphasize that (pure) functional programming often works best as “tools for thought” while object-oriented languages and frameworks work best as “tools for building running software”.


The grade for this course will be based on (1) group participation; (2) lab work; (3) a paper describing the lab work or explaining advanced functional programming concepts to practitioners; (4) final presentation of paper and lab work.


The course is taught by prof. dr. Erik Meijer, who is affiliated with Microsoft (Redmond, USA), in combination with a part time appointment at Delft University of Technology. The course is partly based on his highly popular Channel 9 Video Lectures on functional programming fundamentals.

Furthermore, the series of lectures will be concluded by Ralf Laemmel (Koblenz), notable language engineering expert, who will dissect Map-Reduce via a representation in Haskell.

The practical assignments will be supervised by Georgios Gousios.

Contact person for this course at TU Delft is prof. dr. Arie van Deursen.


We will be using the best-selling book Programming in Haskell by Graham Hutton.

Programming in Haskell
Graham Hutton, University of Nottingham
Cambridge University Press, 2007
Paperback: £23.99 / $45.00 (ISBN-13: 9780521692694 | ISBN-10: 0521692695)
eBook: $36.00 (ISBN-13: 9780511292187 | ISBN-10: 051129218X) 
Kindle: $36.00 (ASIN: B001FSKE6Q)

Additional reading: Ralf Laemmel. Google's MapReduce Programming Model -- Revisited. Science of Computer Programming, 2009.


Attendance to this course is limited to 15 students. Please register on for this course.

Schedule 2012

The schedule for the course in 2012 consists of the following lectures at TU Delft:

  • Monday September 10: 18:00-19:00. Introduction and welcome.
  • Friday September 14, September 21, September 28: Lectures 10:45-12:30
  • Monday September 17, September 24: Lectures 08:45-12:30.
  • Monday, October 1: Lecture Ralf Laemmel, 10:45-12:30.

All lectures will be in HB09.130 -- except Friday September 21, which will be in HB19.130.

Furthermore, various on line sessions will be planned to discuss the labwork and student papers: the dates for these will be set together with the students. Due to the 9 hour time difference with Redmond, USA, these will take place in the (early) evening.

This format was also successfully used in the Reactive Programming course taught by Erik Meijer in the spring semester.


Further Information

For further information, contact Erik Meijer or Arie van Deursen.

Edit | Attach | Printable | Raw | More topic actions
Revisions: | r1.6 | > | r1.5 | > | r1.4 | Page history | Backlinks
You are here: Main > WebLeftBar > Courses > FunctionalProgrammingCourse

to top

Copyright © 2003-2018, Software Engineering Research Group, Delft University of Technology, The Netherlands