HPC High performance computing
HomeComputing centerHPC SoftwaresResearch and developmentCollaborations
Home / Summer Schools 2012

Computer Science

Summer school 2012

Functional Programming for Parallel and

Concurrent Applications

Cadarache, from June 11 till June 22, 2012.
Logo CEA


Accommodation and courses take place in a castle depending of the CEA (French Alternative Energies and Atomic Energy Commission) at Cadarache, South of France, from June 11 till June 22, 2012.


The aim of the summer school is to give a thorough and application-oriented introduction to functional programming using the programming language Haskell.  A special focus is on parallel and concurrent programming, highlighting the ways in which features such as strong typing and purity make it dramatically easier to write reliable parallel or concurrent code.  The school is split into three different courses that highlight different aspects of functional programming. All courses consist of lectures and hands-on sessions where everyone can try out the language on several exercises.  No preliminary knowledge of functional programing is required.


** Lecture A : Introduction to Functional Programming

  Ralf Hinze    http://www.cs.ox.ac.uk/ralf.hinze/

Functional programs are easier to develop and reason about than their imperative counterparts. This makes them an ideal vehicle for the exploration of data structures and modularisation. This course provides the solid foundations of functional programming using the language Haskell as a vehicle.

We shall be mostly concerned with programming in the small, but we also develop the necessary skills to solve medium-sized programming problems in the functional paradigm.  Specifically, we cover expressions, types, type classes, polymorphism, higher-order functions and monads.

** Lecture B : Practice of Functional Programming

  Andres Löh    http://www.andres-loeh.de/ 

In this course, we will look at the practical problems that arise while moving from the first small programs written while learning the language to large projects with a multitude of modules and code that must be both correct and efficient.

How can we obtain more information about a program? How can we write code such that it is easy to understand? What about performance? What are potential pitfalls and how can we avoid them? How to create programs that will be reusable, and robust in the presence of change?
We will look at libraries, data structures, design patterns, testing, reasoning about performance as well as introduce a multitude of useful tools that Haskell programmers can find for free.

** Lecture C : Parallel and Concurrent Programming in Haskell

  Simon Marlow  http://research.mi crosoft.com/en-us/people/simonmar/

While most programming languages nowadays provide some form of concurrent or parallel programming facilities, very few provide as wide a range as Haskell.  The Haskell language is fertile ground on which to build abstractions, and concurrency and parallelism are no exception here.  In the world of concurrency and parallelism, there is good reason to believe that no "one size fits all" programming modelexists, and so prematurely committing to one particular paradigm is likely to tilt the language towards favouring certain kinds of problem.  Hence in Haskell we focus on providing a wide range of abstractions and libraries, so that for any given problem it should be possible to find a tool that suits the task at hand.

In this course we will introduce the main programming models available for concurrent and parallel programming in Haskell.  The course will cover basic parallel programming, concurrent programming with MVars and Software Transactional Memory, asynchronous exceptions, building concurrent server applications, building distributed applications with Cloud Haskell, and will briefly cover GPU programming in Haskell.

Summer schools are intended for researchers, engineers and PhD students.

They allow them to review the state of progress of the proposed subjects and to confront their experience.

The teaching is done in English. It is complemented by practical works, in small groups, hosted by assistants.


If you wish to join, thank you for filling this registration form and sending it to Régis Vizet before may 30, 2012



Summer Schools secretary
Régis Vizet - CEA
tel: 01 69 26 47 45
Fax: 01 69 26 70 80

Coordinators of the computer science summer school:
Francesco Zappa Nardelli - INRIA 
Olivier Boudeville - EDF


Registration fees:
Full rate: 2800 euros
Academia/ University & Public Research rate: 1400 euros
Phd student rate: 700 euros
(accommodation and meals included)