Niveau d'étude
BAC +4
ECTS
4,5 crédits
Composante
Sciences économiques, gestion, mathématiques et informatique
Volume horaire
24h
Période de l'année
Enseignement septième semestre
Description
L’intégration de paradigmes de programmation fonctionnelle s’est fortement développée depuis de nombreuses années au sein de langages de programmation “mainstream” tels que ceux définis sur la Java Virtual Machine. Ce cours vise à donner aux étudiants une introduction pratique à ces paradigmes et à leurs avantages. Leur instanciation est vue dans le cadre des langages Java et Scala. Le traitement des flux de données, ainsi que les notions de pipeline fonctionnel sur ces données est aussi étudié.
Objectifs
Les objectifs de la matière consistent en une compréhension puis une maîtrise des principes suivants :
• Problèmes liés aux effets de bord, principes de transparence référentielle, de déterminisme, de totalité et de polymorphisme
• Fonctions de premier ordre, fonction anonymes, interfaces fonctionnelles
• Curryfication, application partielle et composition de fonctions
• Structures de données fonctionnelles,
• Flux de données et opérations associées (map, flatmap, filter, folds)
• Gestion fonctionnelle de la partialité et des erreurs (options, either, try)
• Gestion fonctionnelle des entrées-sorties
• Memoization et évaluation paresseuse
• Patrons de programmation fonctionnels
Évaluation
Modalités : Mixte : CC + CT
SESSION 1 :
Contrôle Continu
• Type : Écrit, QCM, Oral, Dossier
• Durée : 2h00
• Précisions : Durée susceptible d’être ajustée en fonction des contraintes pédagogiques, matérielles ou logistiques, dans le respect des M3C applicables.
Contrôle Terminal
• Type : Écrit
• Durée : 2h00
• Précisions : Durée susceptible d’être ajustée en fonction des contraintes pédagogiques, matérielles ou logistiques, dans le respect des M3C applicables.
Régime Dérogatoire
• Type : Écrit
• Durée : 2h00
• Précisions : Durée susceptible d’être ajustée en fonction des contraintes pédagogiques, matérielles ou logistiques, dans le respect des M3C applicables.
SESSION 2 :
• Type : Écrit
• Durée : 2h00
• Précisions : Durée susceptible d’être ajustée en fonction des contraintes pédagogiques, matérielles ou logistiques, dans le respect des M3C applicables.
Utilisation de l'intelligence artificielle :
L’utilisation de l’Intelligence Artificielle est interdite lors des évaluations.
Heures d'enseignement
- CMCM12h
- TDTD12h
Pré-requis obligatoires
• Programmation orientée-objet en Java, telle que vue dans les EC Programmation orientée-objet aux S4 et S5.
• Aspects techniques de la gestion de projet informatique (suivi de version, compilation / build) pour la réalisation des TDs, tels que vus dans l’EC DevOps au S5.
• Une connaissance de Scala n’est pas nécessaire.
Bibliographie
- Functional Programming in Java: How functional techniques improve your Java programs, P.-Y. Saumont, 2017
- Programming in Scala (3rd Edition), M. Odersky, L. Spoon et B. Venners, 2016
- Functional Programming in Scala, P. Chiusano et R. Bjarnason, 2014
- Grokking functional programming, M. Patcha, 2022
