• Niveau d'étude

    BAC +4

  • ECTS

    3 crédits

  • Composante

    Sciences économiques, gestion, mathématiques et informatique

  • Volume horaire

    24h

  • Période de l'année

    Enseignement septième semestre

Objectifs

Depuis sa version 1.8, Java inclut de nombreuses instances de concepts fonctionnels qui permettent d’améliorer la qualité du code. D’autres langages se développent aussi au-dessus de la JVM, comme Kotlin et Scala, compatibles avec Java, et vont encore plus loin en ce qui concerne l’application des principes de la programmation fonctionnelle et la proposition de particularités associées. L’objectif de ce cours est d’étudier ces principes et propositions d’un point de vue général puis de leur application dans le monde JVM.

Approche pédagogique et plan de cours.

  • Problème des effets de bord, transparence référentielle, déterminisme, totalité et polymorphisme
  • Fonctions de premier ordre, fonction anonymes (lambdas),  interfaces fonctionnelles
  • Application partielle et composition de fonctions
  • Structures de données fonctionnelles, immutabilité, streams
  • Gestion de la partialité et des erreurs
  • Maps, filtres et folds
  • Entrées-sorties fonctionnelles, notions d’effets
  • Memoization, Evaluation paresseuse
  • Patterns fonctionnels
  • Lien avec Kotlin (librairie fonctionnelle Arrow) et Scala (acteurs avec Akka)
Lire plus

Évaluation

Session 1 : Évaluation continue (cf. règle par défaut de la section « Modalités spécifiques » des M3C spécifiques)

Session 2 : Règle par défaut décrite dans la section « Modalités de contrôle et examens / Modalités spécifiques »

Lire plus

Heures d'enseignement

  • CMCM12h
  • TDTD12h

Pré-requis obligatoires

Programmation objet en Java (des rappels sur la généricité seront faits)

Lire plus

Compétences visées

  • Programmation fonctionnelle en Java
  • Bases en Kotlin et en Scala
  • Résolution de problèmes à l’aide de patrons de programmation fonctionnelle
Lire plus

Bibliographie

  • Functional Programming in Java: How functional techniques improve your Java programs, P.-Y. Saumont, 2017
  • Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions, V. Subramaniam, 2014
  • Functional Interfaces in Java: Fundamentals and Examples, R. Lecessi, 2019
  • Programming in Scala (3rd Edition), M. Odersky, L. Spoon et B. Venners, 2016
  • Functional Programming in Scala, P. Chiusano et R. Bjarnason, 2014
  • Functional Kotlin: Extend your OOP skills and implement functional techniques in Kotlin and Arrow, M. Arias et R. Chakraborty, 2018
Lire plus