020FPRES3 | Functional Programming |
---|---|
![]() |
The goal of this course is to introduce the functional programming paradigm using, mainly, the Java programming language. It also illustrates some functional programming concepts in Python and introduces Scala as mutli-paradigm hybrid programming language. The course begins with an overview of functional programming followed by a gradual exposition of the evaluation model (used to reason about functional programs) alongside the explanation of the following concepts: recursion and the optimization of recursive functions, the use of functions as values, the partial application of functions, object immutability and its advantages, types and pattern matching, pairs and tuples, lists and functional collections, combinatorial search problem solving using for-expressions, lazy evaluation, functional streams, infinite sequences, the variance of polymorphism with regards to inheritance and a brief of overview of key monad such as Option, Try and Future. These concepts will be illustrated by examples and exercises in Java, Python and Scala. Finally, the course will end with an introduction to program proving using structural induction. Temps présentiel : 30 heures Charge de travail étudiant : 70 heures Méthode(s) d'évaluation : Examen final, Examen partiel, Travail personnel |
Les prérequis de ce cours sont les suivants | |
---|---|
Object-Oriented Programming Programmation Orientée Objets |