M323 V1
Programmer de manière fonctionnelle
- Type
- EP obligatoire
- Lieu
- École professionnelle
- Année
- 3ème année d'apprentissage
- 323_1_Programmer%20de%20mani%C3%A8re%20fonctionnelle.pdf
Compétence visée par le module
Effectuer une description déclarative et une implémentation fonctionnelle d’algorithmes et de parties d’applications.
Situation / objet
Utilisation avec 3 à 5 unités fonctionnelles.
Objectifs opérationnels et connaissances
323.1 Analyser et décrire les exigences en vue de la réalisation d'une programmation fonctionnelle.[g4.1, g4.4] g4 g5
| Connaissance | Texte |
|---|---|
| 323.1.1 | Connaître la différence entre programmation impérative et programmation déclarative/fonctionnelle (paradigme de programmation déclarative). |
| 323.1.2 | Connaître des méthodes de description déclarative de problèmes et d’états finaux. |
| 323.1.3 | Connaître les avantages et les inconvénients de la programmation fonctionnelle. |
| 323.1.4 | Connaître les termes de la programmation fonctionnelle (p. ex. fonction pure, donnée immuable, expression lambda, fonction, fermeture [closure], rappel [callback], foncteur), les comprendre et pouvoir les utiliser correctement. |
| 323.1.5 | Connaître des possibilités pour élaborer un concept de réalisation adapté à la programmation fonctionnelle. |
323.2 Implémenter de manière efficiente des algorithmes et des problèmes d’applications selon le paradigme de programmation fonctionnelle et les exigences données. [g5.2, g5.5] g4 g5
| Connaissance | Texte |
|---|---|
| 323.2.1 | Pouvoir lire, comprendre, maintenir et étendre un code fonctionnel. |
| 323.2.2 | Connaître des concepts de programmation fonctionnelle (p. ex. filter, map, reduce) et des patrons de conception adaptés (p. ex. builder pattern). |
| 323.2.3 | Connaître des méthodes pour exécuter un code de manière distribuée, parallèle ou concurrente. |
323.3 Améliorer et optimiser le code impératif implémenté en utilisant la programmation fonctionnelle (refactorisation). [g5.4, g5.5] g4 g5
| Connaissance | Texte |
|---|---|
| 323.3.1 | Connaître des moyens pour déterminer si des parties de programmes peuvent, après examen, être optimisées ou améliorées grâce à l’implémentation fonctionnelle. |
| 323.3.2 | Connaître les éléments fonctionnels d’un langage de programmation et pouvoir ainsi développer des applications avec un paradigme de programmation impérative et déclarative. |
323.4 Vérifier l’exactitude et la qualité de l’implémentation. [g6.3, g6.5, g6.6] g4 g5
| Connaissance | Texte |
|---|---|
| 323.4.1 | Connaître des moyens de tester un code fonctionnel implémenté (p. ex. tests unitaires). |
| 323.4.2 | Connaître des directives de code appropriées et les appliquer de manière systématique. |
| 323.4.3 | Connaître les meilleures pratiques de la programmation fonctionnelle et pouvoir les appliquer. |
Matrice de compétences
| Bande | Compétence | Débutant | Intermédiaire | Avancé | Objectifs |
|---|---|---|---|---|---|
| A1 | Montrer les différences entre la programmation fonctionnelle et d'autres paradigmes de programmation | Je peux décrire les propriétés des fonctions (par exemple une fonction pure) et expliquer la différence avec d'autres structures de programmation (par exemple une procédure) | Je peux expliquer le concept de valeurs immuables et utiliser des exemples ainsi qu'expliquer ce concept de programmation fonctionnelle par rapport à d'autres langages de programmation (par exemple par rapport à des objets référencés) | Je peux montrer comment les problèmes sont résolus dans les différents concepts (OO, procédural et fonctionnel) et les comparer entre eux |
323.1
|
| B1 | Décrire les exigences et la conception de la programmation déclarative | Je peux expliquer la différence entre la programmation impérative et déclarative et nommer les éléments de conception fonctionnelle (par exemple les types de données immuables, les constructeurs, les opérateurs composables) | Je peux formuler des exigences déclaratives et créer une conception fonctionnelle pour un problème | Je peux transférer les exigences et la conception d'une solution impérative en une solution déclarative et évaluer les avantages et les inconvénients des deux approches. |
323.1
|
| C1 | Implémenter la programmation fonctionnelle | Je peux expliquer un algorithme | Je peux diviser les algorithmes en parties fonctionnelles | Je peux implémenter des fonctions dans des algorithmes cohérents et analyser leur structure pour en vérifier l'exactitude et la lisibilité. |
323.2
|
| C2 | Implémenter la programmation fonctionnelle | Je peux traiter les fonctions comme des objets (les stocker dans des variables, les transmettre) et appliquer les fonctions de base d'ordre supérieur (carter, filtrer, réduire) aux listes individuellement. | Je peux utiliser des fonctions comme arguments, écrire des expressions lambda et utiliser Map, Filter et Reduction combinés pour effectuer des transformations de données plus complexes. | Je peux utiliser des fonctions d'ordre supérieur, des expressions lambda et une composition de fonctions pour résoudre des tâches de traitement de données complexes et contrôler le flux du programme (par exemple, agrégation, tri selon des critères définis par l'utilisateur). |
323.2
|
| D1 | Refactoriser et optimiser le code existant | Je peux lister les techniques de refactoring et les mesures d'amélioration des performances et expliquer leur objectif | Je peux appliquer des techniques de refactoring pour rendre le code plus lisible et mettre en œuvre des mesures spécifiées pour améliorer les performances. | Je peux évaluer l'impact du refactoring, éviter les effets secondaires indésirables et sélectionner des algorithmes ou des structures de données appropriés pour améliorer les performances. |
323.4
323.3
|
Modules liés par compétences PEC
| Module | Titre | PEC communes |
|---|---|---|
| M106 | Interroger, traiter et assurer la maintenance des bases de données | |
| M223 | Réaliser des applications multi-utilisateurs orientées objets | |
| M319 | Concevoir et implémenter des applications | |
| M320 | Programmer orienté objet | |
| M321 | Programmer des systèmes distribués | |
| M335 | Réaliser une application pour mobile | |
| M164 | Créer des bases de données et y insérer des données | |
| M165 | Utiliser des bases de données NoSQL | |
| M183 | Implémenter la sécurité d'une application | |
| M293 | Créer et publier un site Web | |
| M294 | Réaliser le front-end d’une application Web interactive | |
| M295 | Réaliser le back-end pour des applications |