F# & programmation fonctionnelle
Ce module propose une introduction progressive et pragmatique à la programmation fonctionnelle, destinée à des étudiants ayant une bonne maîtrise de Java impératif et orienté objet.
L’objectif principal n’est pas l’apprentissage d’une nouvelle syntaxe, mais un changement de manière de raisonner sur les programmes :
passer d’un enchaînement d’actions à une vision du programme comme transformation de données, lisible, testable et robuste.
Axes principaux du cours
Le cours met l’accent sur :
- la lisibilité du code et la compréhension locale ;
- la réduction des effets de bord ;
- l’immutabilité et la séparation entre calcul et entrées/sorties ;
- le raisonnement par types comme outil de conception ;
- l’itération sans boucles impératives (via
map,filter,fold) ; - la récursion et la récursion terminale ;
- la composition de fonctions et l’écriture en pipeline.
Langage et transferts de compétences
Le langage principal utilisé est F#, choisi pour la clarté de son modèle fonctionnel et de son système de types.
En fin de module, une attention particulière est portée au transfert vers Java moderne :
- expressions lambda,
- Streams,
- bonnes pratiques,
- limites du style fonctionnel en contexte industriel.
Organisation pédagogique
Le module alterne :
- démonstrations,
- exercices guidés,
- travaux pratiques,
avec un accent constant sur :
- la lecture du code,
- la compréhension des invariants,
- la capacité à expliquer ce que fait un programme sans en simuler l’exécution pas à pas.
Objectifs pédagogiques
À l’issue du cours, les étudiants auront acquis des réflexes de conception utiles bien au-delà du paradigme fonctionnel, et directement applicables à leur pratique quotidienne de la programmation professionnelle.