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.
This course is based on the highly popular book and accompanying courses by Graham Hutton (http://www.cs.nott.ac.uk/~gmh/fun.html
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 https://blackboard.tudelft.nl for this course.
The schedule for the course in 2012 consists of the following lectures at TU Delft:
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.
- 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.
For further information, contact Erik Meijer or Arie van Deursen.