En | Ar

020PFSES3

Programmation fonctionnelle

Le but de ce cours est d’introduire le paradigme de programmation fonctionnelle en utilisant, essentiellement, Scala comme langage de programmation. Le cours commence par un aperçu de la programmation fonctionnelle tout en expliquant comment des langages traditionnellement impératifs (tels que C++ et Java) ont récemment incorporé quelques éléments de ce paradigme. Suite à cela, le modèle d’évaluation permettant de raisonner sur des programmes fonctionnels sera progressivement exposé en parallèle avec l’explication des concepts suivants : la récursivité et l’optimisation des fonctions récursives, l’utilisation des fonctions en tant que valeurs, l’application partielle des fonctions, les objets immutables et leurs avantages, les types et le « pattern matching », les paires et les tuples, les listes et les collections fonctionnelles, la résolution de problèmes combinatoires en utilisant les « for-expressions », l’évaluation paresseuse, les « streams » fonctionnelles et les séquences infinies. Evidemment, ces concepts seront illustrés par des exemples et des exercices implémentés en Scala. Ensuite, la syntaxe Java 8 d’un sous-ensemble de ces concepts sera exposée. Finalement, le cours se terminera par une introduction à la preuve de programmes en utilisant l’induction structurelle.


Temps présentiel : 35 heures


Charge de travail étudiant : 65 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