Le cours.
L'examen 2018 . Correction de l'examen 2018 .
Corrections des TP.
TD
TD 1 : Variables et fonctions.
TD 2 : Types paramétrés I.
TD 3 : Types paramétrés II.
TD 5 : Types algébriques I.
TD 6 : Types algébriques II.
TD 7 : Yojson, Dictionnaires.
TD 8 : Modules et foncteurs.
TD 9 : Boucles fonctionnelles.
TP
TP 1 : Prise en main de l'environnement.
TP 3 : Fractale de Mandelbrot.
TP 4 : Script parcourant un système de fichiers.
TP 5 : Dessins d'arbres binaires.
TP 6 : Algorithme de Reingold-Tilford.
TP 7 : Manipuler des données d'OpenStreetMap.
TP 8 : Le compte est bon.
TP 9 : Évaluation paresseuse et machines de Turing.
TP 10 : Programmation fonctionnelle en Java.
Aides
Pour l'environnement de développement :
Si vous ne pouvez rien installer sur votre machine, vous pouvez utiliser un interpréteur en Javascript dans votre navigateur.
Voici comment. Ce ne sera certainement pas suffisant, puisqu'on ne maitrise pas les paquets installés.
Pour programmer en Ocaml :
Archive année 2017
L'examen d'avril 2017 .
TD
TD 1 : Variables et fonctions.
TD 2 : Types paramétrés I.
TD 3 : Types paramétrés II.
TD 5 : Types algébriques I.
TD 6 : Types algébriques II.
TD 7 : Yojson, Dictionnaires.
TD 8 : Modules et foncteurs.
TD 9 : Boucles fonctionnelles.
TP
TP 1 : Prise en main de l'environnement.
TP 3 : Fractale de Mandelbrot.
TP 4 : Script parcourant un système de fichiers.
TP 5 : Dessins d'arbres binaires.
TP 6 : Algorithme de Reingold-Tilford.
TP 7 : Utiliser des données d'OpenStreetMap.
TP 8 : Évaluation paresseuse et machines de Turing.
TP 9 : Le compte est bon.
TP 10 : Programmation fonctionnelle en Java.
Archive année 2016
TD
TP
TP 1 : Ensemble de Mandelbrot.
TP 2 : Problème des $n$ reines.
TP 4 : Une énigme mathématique.
TP 5 : L'algorithme de Reingold et Tilford
TP 6 : Le compte est bon.
TP 7 : Zippers et machines de Turing.
Projet
Le projet de cette année consiste à l'implémentation d'un algorithme, chaque groupe travaillant sur un algorithme différent. Chaque algorithme sera décrit dans une monade permettant de représenter les principales étapes du calcul et de produire une sortie sous la forme de dessins. On pourra ensuite utiliser une console (qui est fournie) pour contrôler l'exécution de l'algorithme avec un affichage du résultat dans une page html.
Voici un exemple avec un tas gauche.
La principale difficulté à laquelle s'attendre est de s'approprier les différentes librairies fournies (à récupérer sur Ametice) pour les utiliser correctement. Il s'agit finalement d'une des principales compétences pour un développeur : être capable d'utiliser des libraires externes. Par ailleurs, les interfaces des librairies fournies sont typiques de programmes fonctionnels, bien les manipuler est donc un bon exercice de programmation fonctionnelle.
Le projet et son infrastructure seront présentés pendant le cours 8 .
Examen
Archive année 2015
TD
TP
Projet 2015
Examen 2015
Archive année 2014
TD
TP
TP 1 : Ensemble de Mandelbrot.
TP 2 : Problème des N-reines.
le TP 3 est annulé, il sera rattrapé plus tard.
TP 4 : Une énigme mathématique.
TP 6 : Fin du TP précédent, en particulier la partie sur les automates cellulaires.
TP 7 : Le compte est bon.
TP 8 : Combinateurs de parsing.
Projet
Projet : Interprèteur fonctionnel.
Examen
Archive année 2013
TD
TD 1 : Variables et $\beta$-réduction.
TD 2 : Fonctionnelles et typage.
TD 3 : Manipulation de listes.
TD 4 : Types paramêtrés et modules.
TP
TP 1 : Ensemble de Mandelbrot.
TP 2 : Petite énigme mathématique.
TP 4 : Le compte est bon.
Projet
Examen