• 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é.

Lire plus

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

Lire plus

É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.

Lire plus

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.

Lire plus

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
Lire plus