Composante
ENSEIRB-MATMECA
Code interne
EI6PG104
Description
Ce cours présente la programmation sous un aspect différent des cours du S5. Le style de programmation présenté au premier semestre est 'impératif', ce cours présente le style de programmation 'fonctionnel'. L'étude de ce style permet d'explorer une nouvelle famille de techniques de programmation, ainsi que de se poser la question de qualités logicielles permettant de distinguer ces différents styles. L'utilisation du langage de programmation Javascript permet de souligner ces différents contrastes.Plan du cours :
Présentation des styles de programmation / paradigmes. Comparaison du style impératif et du style fonctionnel. Introduction à la pureté, la modularité, et la 1ère classe. Petit historique des langages de programmation.
Présentation du langage Ecmascript (syntaxe, environnement node)Notion de portée et de fermeture.
Pureté et Modularité. Notion d'effet de bord, pureté, transparence référentielle. Programmation sans effets de bords. Utilisation de la récursivité et de la récursivité terminale.
Structures de données fonctionnelles.Listes chaînées, arbres. Notion de persistance. Opérateurs d'ordre supérieur sur ces structures de données.
Citoyenneté de 1ère classe. Fonctions d'ordre supérieur. Techniques : généralisation, spécialisation. Notions de généricité, curryfication.Exemples d'utilisation de fonctions dans les structures de données. Exemples d'interface de programmation fonctionnelle (pipeline, map-reduce, fluent interfaces)
Techniques de programmationProgrammation typée (polymorphisme), programmation "dirigée par les fonctions", contrôle de l'évaluationStratégies d'évaluation.
Modularité. Retour sur les notions : abstraction, encapsulation, interface, spécification, dépendance
Syllabus
Présentation des styles de programmation / paradigmes. Comparaison du style impératif et du style fonctionnel. Introduction à la pureté, la modularité, et la 1ère classe. Petit historique des langages de programmation.
Présentation du langage Ecmascript (syntaxe, environnement node)Notion de portée et de fermeture.
Pureté et Modularité. Notion d'effet de bord, pureté, transparence référentielle. Programmation sans effets de bords. Utilisation de la récursivité et de la récursivité terminale.
Structures de données fonctionnelles.Listes chaînées, arbres. Notion de persistance. Opérateurs d'ordre supérieur sur ces structures de données.
Citoyenneté de 1ère classe. Fonctions d'ordre supérieur. Techniques : généralisation, spécialisation. Notions de généricité, curryfication.Exemples d'utilisation de fonctions dans les structures de données. Exemples d'interface de programmation fonctionnelle (pipeline, map-reduce, fluent interfaces)
Techniques de programmationProgrammation typée (polymorphisme), programmation "dirigée par les fonctions", contrôle de l'évaluationStratégies d'évaluation.
Modularité. Retour sur les notions : abstraction, encapsulation, interface, spécification, dépendance
Informations complémentaires
Ce cours présente la programmation sous un aspect différent des cours du S5. Le style de programmation présenté au premier semestre est 'impératif', ce cours présente le style de programmation 'fonctionnel'. L'étude de ce style permet d'explorer une nouvelle famille de techniques de programmation, ainsi que de se poser la question de qualités logicielles permettant de distinguer ces différents styles. L'utilisation du langage de programmation Javascript permet de souligner ces différents contrastes.
Modalités de contrôle des connaissances
Évaluation initiale / Session principale - Épreuves
Type d'évaluation | Nature de l'épreuve | Durée (en minutes) | Nombre d'épreuves | Coefficient de l'épreuve | Note éliminatoire de l'épreuve | Remarques |
---|---|---|---|---|---|---|
Epreuve Terminale | Travail sur machine | 120 | 1 | sans document sans calculatrice |
Seconde chance / Session de rattrapage - Épreuves
Type d'évaluation | Nature de l'épreuve | Durée (en minutes) | Nombre d'épreuves | Coefficient de l'épreuve | Note éliminatoire de l'épreuve | Remarques |
---|---|---|---|---|---|---|
Epreuve terminale | Travail sur machine | 120 | 1 | sans document sans calculatrice |