020PFSES3

Programmation fonctionnelle

L’objectif de ce cours est d’introduire le paradigme de la programmation fonctionnelle, en utilisant principalement le langage Java. Il illustre également certains concepts de programmation fonctionnelle en Python et introduit Scala comme langage hybride multi-paradigme. Le cours débute par une vue d’ensemble de la programmation fonctionnelle, suivie d’une exposition progressive du modèle d’évaluation (utilisé pour raisonner sur les programmes fonctionnels) ainsi que des concepts suivants : la récursivité et l’optimisation des fonctions récursives, l’utilisation des fonctions comme valeurs, l’application partielle de fonctions, l’immuabilité des objets et ses avantages, les types et le filtrage par motifs (pattern matching), les paires et tuples, les listes et collections fonctionnelles, la résolution de problèmes de recherche combinatoire à l’aide des expressions for, l’évaluation paresseuse, les flux fonctionnels, les séquences infinies, la variance du polymorphisme par rapport à l’héritage, et un aperçu des principales monades telles que Option, Try et Future. Ces concepts seront illustrés par des exemples et exercices en Java, Python et Scala. Enfin, le cours se conclura par une introduction à la preuve de programmes via l’induction structurelle.


Temps présentiel : 30 heures


Charge de travail étudiant : 70 heures


Méthode(s) d'évaluation : Examen écrit

Les prérequis de ce cours sont les suivants
 Programmation orientée objets
Ce cours est proposé dans les diplômes suivants
 Licence en informatique
Licence en informatique
Diplôme d'ingénieur - spécialité génie informatique et communications - option : génie logiciel
Diplôme d'ingénieur - spécialité génie informatique et communications - option : génie logiciel
Diplôme d'ingénieur - spécialité génie informatique et communications - option : réseaux de télécommunications
Diplôme d'ingénieur - spécialité génie informatique et communications - option : réseaux de télécommunications