M323 V1

Programmer de manière fonctionnelle

Type
EP obligatoire
Lieu
École professionnelle
Année
3ème année d'apprentissage
PDF
323_1_Programmer%20de%20mani%C3%A8re%20fonctionnelle.pdf

Compétences PEC liées

g4 g5

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
ConnaissanceTexte
323.1.1Connaître la différence entre programmation impérative et programmation déclarative/fonctionnelle (paradigme de programmation déclarative).
323.1.2Connaître des méthodes de description déclarative de problèmes et d’états finaux.
323.1.3Connaître les avantages et les inconvénients de la programmation fonctionnelle.
323.1.4Connaî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.5Connaî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
ConnaissanceTexte
323.2.1Pouvoir lire, comprendre, maintenir et étendre un code fonctionnel.
323.2.2Connaître des concepts de programmation fonctionnelle (p. ex. filter, map, reduce) et des patrons de conception adaptés (p. ex. builder pattern).
323.2.3Connaî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
ConnaissanceTexte
323.3.1Connaî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.2Connaî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
ConnaissanceTexte
323.4.1Connaître des moyens de tester un code fonctionnel implémenté (p. ex. tests unitaires).
323.4.2Connaître des directives de code appropriées et les appliquer de manière systématique.
323.4.3Connaître les meilleures pratiques de la programmation fonctionnelle et pouvoir les appliquer.

Matrice de compétences

BandeCompétenceDébutantIntermédiaireAvancé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

ModuleTitrePEC communes
M106 Interroger, traiter et assurer la maintenance des bases de données
g4 g5
M223 Réaliser des applications multi-utilisateurs orientées objets
g4 g5
M319 Concevoir et implémenter des applications
g4 g5
M320 Programmer orienté objet
g4 g5
M321 Programmer des systèmes distribués
g4 g5
M335 Réaliser une application pour mobile
g4 g5
M164 Créer des bases de données et y insérer des données
g4
M165 Utiliser des bases de données NoSQL
g5
M183 Implémenter la sécurité d'une application
g5
M293 Créer et publier un site Web
g5
M294 Réaliser le front-end d’une application Web interactive
g5
M295 Réaliser le back-end pour des applications
g5