Programmation fonctionnelle

Ects : 4
Compétence à acquérir :
L'objectif de ce cours est de familiariser les étudiants avec les principes de la programmation fonctionnelle en utilisant le langage Haskell. La programmation fonctionnelle est un paradigme moderne de programmation qui permet la conception à la fois rapide et fiable des applications complexes. Les notions de la programmation fonctionnelle, comme les expressions lambda, sont actuellement prévalents dans la plupart des langages de programmation modernes, comme Java, C++, JavaScript, etc. Le but de ce cours est d'aider les étudiants à les maîtriser en utilisant un langage purement fonctionnel (Haskell). De plus, le cours couvrira le système de types de Haskell, montrera comment un tel système de types peut nous aider à concevoir des programmes dont on peut vérifier le bon fonctionnement de manière formelle, et donnera les bases mathématiques de la théorie de la programmation fonctionnelle.

Description du contenu de l'enseignement :
La notion de fonction comme valeur, et les "high-order functions".
La récursivité dans le contexte de la programmation fonctionnelle et les questions de complexité associées.
Les systèmes de types qui permettent la manipulation de fonctions et de fonctions partielles (la notion de Currying)
La récursivité dans le contexte des types. Les types infinis, les structures de données associées et leur manipulation.
La théorie mathématique de la programmation fonctionnelle (lambda-calcul, théorème de Church-Roser) et la théorie mathématique de la vérification du comportement d'un programme (sémantiques).
Toutes ces sujets seront élaborés avec des exercices de programmation en Haskell.