Latest change Dec 13, 2019

Course Literature

This is the course book:

Michael R. Hansen, Hans Rischel: Functional Programming Using F#, Cambridge University Press, 2013, ISBN: 9781107684065. The book has a home page.

Here are directions for reading: what parts of the literature are of relevance for the written exam.

Recommended (Optional) Literature

If you have an interest in functional programming, you may want to check out the language Haskell for which there are also a number of good and pedagogical textbooks: see here.

Extra Course Material

Functional programming for parallelism: MapReduce, and Erlang.

A Brief Survey of Functional Programming Languages: an attempt to give you some context.

The slides for the course are found from the detailed schedule.

A set of exercises.

FAQ (Frequently Asked Questions) for the course.

Downloading F#

You can download F# for free, to your own computer here. This page contains instructions how to install F# on a number of platforms including Windows, Mac, and linux. Note that if you have Visual Studio (2012 or later), then you already have F# (although it might not be the latest version).

Non-Windows users also need Mono, which is an open implementation of the .NET CLR that allows .NET applications to be run also on non-Windows platforms. Most linux distributions carry Mono, unfortunately often quite old versions. Newer versions can be downloaded here. If you use Ubuntu 14.04 or later (or some Ubuntu derivative) then Mono and F# are included in the distribution, and can simply be installed directly from the software center (or by using a suitable packet manager).

Other Online Functional Programming Resources

The F# Language Specification.

The Wikipedia Entry on Functional Programming, and F#.

F# Guide (from Microsoft), with F# code formatting guidelines.

FsCheck download and documentation at GitHub.

A text on asynchronous workflows.

F# Functional Koans, a way to learn F# through testing.

Erlang is a functional and process-parallel language, originally developed at Ericsson, which is extensively used in real applications.

Scala is a "better java" which integrates element of object-oriented and functional programming languages.

Clojure is a modern LISP dialect.

Björn Lisper
bjorn.lisper (at)