This page is kept for historical purposes only. Please see the home page for my current situation. —Luca Saiu.

This old page is kept for historical purposes only; the current 2011/2012 course page is here.

PFA ("Programmation fonctionnelle avancée") - 2010

PFA is a course about advanced aspects of functional programming. It is part of the Master 2 Spécialité Programmation et Logiciels Sûrs of Institut Galilée, Université Paris Nord.

This year I teach classes (CM), while Jean-Yves Moyen manages the lab exercises (TP). With some fine-tuning and changes, my lessons are based on what Jean-Vincent Loddo and Jean-Yves did last year; of course all mistakes in what I do or write remain mine.

Even if I speak French in class, I maintain these pages in English. There are essentially three reasons:


Jean-Yves Moyen has prepared a really, really nice project based on TrivialML. You can find the text here on his home page; the text also contains a link to the tarball you have to download.

Written exam (2010-12-17), with solution

You can find everything here.

Written exam (rattrapage, 2011-06-16), with solution

You can find everything here.

Last year's written exam

I've published here a copy of last year's written exam (by Jean-Vincent Loddo et Jean-Yves Moyen), including solutions.

Compared to last year, this year we have let you do more exercises on functors; we have also spoken about the runtime, so expect a question or two about that. About the rest, the questions will be similar to what you see here.

Erreur à localiser

J'ai trouvé un bug : la version courante de TrivialML accepte le programme suivant, clairement pas bien typé :

let x : int = 1 in x + True
Trouvez l'erreur dans le fichier ; pourquoi le contrôle de type passe ? Si Jean-Yves est d'accord [il est d'accord], j'aimerais assigner un petit bonus sur la note finale au premier étudiant donnant la réponse correcte. [La réponse a été trouvée, mais l'exercice reste une bonne opportunité de bien comprendre les sources]


I don't know the TP room, but Jean-Yves told me it's always the same. You should know it by now.
2010-10-05 Tue 13:45..17:00PFA CM1 (B107)
2010-10-07 Thu 13:45..17:00PFA TP1
2010-10-14 Thu 13:45..17:00PFA TP2
2010-10-19 Tue 13:45..17:00PFA CM2 (B107)
2010-10-28 Thu 13:45..17:00PFA TP3
2010-11-04 Thu 13:45..17:00PFA TP4
2010-11-09 Tue 13:45..17:00PFA CM3 (B107)
2010-11-16 Tue 13:45..17:00PFA CM4 (B107)
2010-11-25 Thu 13:45..17:00PFA TP5
2010-11-30 Tue 13:45..17:00PFA CM5 (B107)
2010-12-07 Tue 13:45..17:00PFA CM6 (B107)
2010-12-09 Thu 13:45..17:00PFA TP6
2010-12-17 Fri 09:00..12:00PFA written exam (F004) (text and solution)

Mailing list: if you're a PFA student then you should subscribe

In September 2010 I made a course mailing list, used for communications and answering questions: if you are a PFA student you are strongly advised to subscribe using this simple web interface. You can send a message to all subscribers (including Jean-Yves Moyen and me, of course) by writing to the address . You are free to use a nickname instead of your real name on the list, if you prefer so.

Useful resources

We will use the Objective Caml language, also called OCaml; you are expected to become fluent in it.
You don't really need to buy books about the language unless you prefer the paper format, as the documentation you find on the Net is really good; in several cases the same text is available on paper and in electronic form.

Of course, you should always have available the official OCaml documentation, particularly the default interface library. We also recommend the following texts, all of which are available online:

Course diary


Here you can find electronic copies of what I distribute on paper in class, and copies of my projector presentations.



Here you can find copies of the ML files I write in class on my computer. Some of them weren't originally supposed to be published as they are not particularly well-written: I use them as exercises or examples writing them while I speak; anyway some students requested a copy, so here they are.

Travaux pratiques (Lab exercises)

You can find TPs on Jean-Yves Moyen's page.

Back to my home page...

Luca Saiu
Last modified: 2011-06-23
Copyright © 2009, 2010 Luca Saiu
Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.