Présenter le contexte pédagogique de cet EniBook sur l'algorithmique.
L'objectif principal des enseignements d'informatique du premier semestre postbac de l'ENIB est l'acquisition des notions fondamentales de l'algorithmique.
Plus précisément, le programme est structuré en \(2\times 3\) objectifs capitalisables :
- les instructions de base pour construire les algorithmes (3 objectifs) :
- les fonctions et les procédures pour structurer et réutiliser les algorithmes (3 objectifs) :
Ces 6 objectifs s'organisent dans le temps selon le graphe de précédence ci-dessous :
Ces différentes notions sont mise en œuvre à travers l'utilisation du langage Python. Mais il ne s'agit pas d'un cours sur le langage Python pour lui-même : nous utiliserons certes les principales caractéristiques du langage pour ce qu'elles ont de suffisamment représentatif et de suffisamment générique sans pour autant en décliner toutes les spécificités. Ceux qui souhaiteraient approfondir leurs connaissances sur Python dans le même esprit « interactif » que cet EniBook pourront commencer par consulter How to Think Like a Computer Scientist. Learning with Python: Interactive Edition 2.0 de Brad Miller et David Ranum du Luther College (Decorah, Iowa, USA).
Au second semestre, les enseignements d'informatique se poursuivent par la réalisation d'un projet de programmation en respectant des méthodes de développement simples.
Nous cherchons à développer trois « qualités » comportementales chez l'informaticien débutant : la rigueur, la persévérance et l'autonomie.
;
» oublié, la machine ne
le peut pas : l'ordinateur ne se contente pas de l'« à peu près ».
La respect des consignes, la précision et l'exactitude sont donc de
rigueur en informatique !Programmer soi-même les algorithmes qu'on a définis est sans doute le meilleur moyen pour mieux assimiler les principales structures algorithmiques et pour mieux comprendre ses erreurs en se confrontant à l'intransigeante impartialité de l'ordinateur, véritable « juge de paix » des informaticiens. Par ailleurs, l'évolution continuelle et soutenue des langages de programmation et des ordinateurs nécessitent de se tenir à jour régulièrement et seule l'autoformation systématique permet de « ne pas perdre pied ».
Pratique personnelle et autoformation constituent ainsi deux piliers de l'autonomisation nécessaire de l'apprenti informaticien.
Les Acquis d'Apprentissage visés (AAv) de ce cours sont les suivants :
- AAv1 : A l’issue du 1er semestre, les étudiants sont capables d’exécuter pas à pas des algorithmes comportant des variables, des structures conditionnelles, itératives et d’appels de fonctions et en déterminer leurs résultats sans erreur
- AAv2 : A l’issue du 1er semestre, les étudiants doivent être capables de construire des algorithmes comportant des variables, des structures conditionnelles, itératives et d’appels de fonctions répondant à un besoin exprimé par un énoncé simple
- AAv3 : A l’issue du 1er semestre, les étudiants doivent être capables de vérifier la validité d'un algorithme (il réalise exactement la tâche pour laquelle il a été conçu) et sa robustesse (il est protégé de conditions anormales d'utilisation)
- AAv4 : A l’issue du 1er semestre, les étudiants doivent être capables de proposer des fonctions réutilisables de façon explicite dans différents contextes d'utilisation
- AAv5 : A l’issue du 1er semestre, les étudiants doivent être capables d'utiliser un langage pour exécuter un programme informatique et être en mesure d'analyser les messages d'erreur et de proposer des corrections adaptées en s'appuyant potentiellement sur une documentation
- AAv6 (Hors ENIBook) : A l’issue du 1er semestre, les étudiants doivent être capables de mesurer et comparer la complexité en termes de temps de calcul d'algorithmes fournis
L'évaluation finale de l'étudiant se basera sur la moyenne de plusieurs épreuves de contrôle continu courtes :
- Eval_AAv 1: Un algorithme est donné à l'étudiant. L'étudiant doit rendre l'ensemble des pas d'exécution ainsi que le résultat final de l'algorithme
- Eval_AAv 2: L'étudiant doit produire le code d'un énoncé explicite donné (ex. trouver la plus grande valeur d'une liste)
- Eval_AAv 3: L'étudiant doit tester et proposer des méthodes de tests d'un algorithme donné ou produit
- Eval_AAv 4: A partir d'un énoncé, l'étudiant doit proposer une spécification et une implémentation d'une fonction
- Eval_AAv 5: Un code informatique produisant une erreur ou ne passant pas un jeu de tests est communiqué à l'étudiant. L'étudiant doit interpréter et corriger les erreurs
- Eval_AAv 6: Un ensemble d'algorithmes sont fournis à l'étudiant. Ces algorithmes peuvent être un seul et même algorithme pour lequel un paramètre grandit (ex. N=10, 100, 1000) ou alors deux (ou plusieurs) algorithmes différents ayant le même objectif (ex. algos de tri, de recherche d'un nombre)
Pour répondre aux exercices qui accompagnent chaque chapitre de cet EniBook sur l'algorithmique, nous adoptons une démarche particulière dite MRV. Cette démarche comme Méthode-Résultat-Vérification, est structurée en 3 étapes :
- M comme Méthode :
- on applique une méthode générique qui permet de résoudre des problèmes équivalents à celui qui est posé;
- R comme Résultat :
- on obtient le résultat attendu par l'exercice;
- V comme Vérification :
- enfin, on réalise une vérification du résultat obtenu à l'aide de techniques alternatives ou complémentaires connues.
Chaque exercice (et exercice de contrôle) ne réclame pas nécéssairement le triplet M, R, V. Par exemple, seuls M et R peuvent être demandés.
Dans chaque exercice une association entre M, R, V et un AAv sera indiqué (ex : AAVx-OBJ: Méthode)
Etant donné une méthode générique pour résoudre un ensemble de problèmes équivalents, la première étape de la démarche MRV consiste à appliquer cette méthode au problème particulier de l'énoncé.
Pour un débutant, cette étape d'application d'une méthode générique est une étape assez facile. Elle nécessite de développer des capacités d'exécution qui mettent en œuvre des mécanismes de déduction pour réaliser le passage de propositions générales à un cas particulier. A l'inverse de l'induction, la déduction est en effet un type de raisonnement qui « va » du général au particulier, de la cause aux effets ou encore du principe aux conséquences.
Cette étape permet ainsi de développer des capacité d'exécution en respectant rigoureusement des consignes imposées. Elle met ainsi en évidence des capacités « techniciennes » qui seront très utiles aux futurs professionnels dans leur mission d'encadrement d'équipes d'ouvriers et de techniciens.
Par application de la méthode (selon les exercices cela correspond à proposer le code Python), il est demandé en seconde étape de la démarche MRV d'obtenir le résultat proprement dit à la question posée.
Etant donné un résultat obtenu par application d'une méthode générique pour résoudre un problème particulier, la troisième étape de la démarche MRV consiste à vérifier ce résultat par des méthodes alternatives ou complémentaires de celle déjà utilisée.
Pour un débutant, cette étape de vérification du résultat obtenu est assez difficile car il s'agit avant tout de remettre en cause son propre travail. Dans le meilleur des cas, le débutant estime que la vérification consiste simplement à refaire les mêmes calculs, le même raisonnement ou la même démarche : c'est effectivement la moindre des choses que de ré-appliquer la méthode pour vérifier qu'on ne s'est pas trompé en l'appliquant la première fois. Mais la vérification consiste plutôt à changer de point de vue sur le problème et à utiliser d'autres méthodes pour « estimer » la validité du résultat.
Il peut effectivement exister plusieurs méthodes alternatives pour résoudre un même problème. Résoudre alors le problème par deux méthodes différentes et obtenir le même résultat renforce bien entendu la « confiance » en ce résultat. Mais dans bien des cas, il s'agit plutôt de méthodes complémentaires, le plus souvent sous forme d'heuristiques, qui permettent de détecter que le résultat est certainement faux, comme par exemple la preuve par 9 en calcul élémentaire, l'analyse dimensionnelle en physique ou les jeux de test en informatique. Et si de telles méthodes complémentaires ne détectent pas que le résultat est faux, alors ça renforce ici encore la « confiance » que l'on peut avoir dans le résultat obtenu.
Cette étape permet ainsi de développer l'esprit critique des futurs professionnels en insistant sur le souci de vérification systématique de ses propres résultats comme de ceux provenant d'autres sources (collègues, articles, internet...).
Dans la pratique, la méthode à utiliser est en général décrite en détail dans le cours. Il suffira alors de l'appliquer dans le cas particulier de l'énoncé. Une fois la méthode appliquée, la réponse à la question posée dans l'énoncé sera mise en évidence. Enfin, de la même manière que pour la méthode, on appliquera une technique de vérification au résultat proposé.
On considère l'algorithme suivant qui calcule le plus grand commun diviseur \(d\) (pgcd) de 2 entiers \(a\) et \(b\) selon l'algorithme d'Euclide : \(\mathrm{pgcd}(a,b) = \mathrm{pgcd}(b,a\%b) = \cdots = \mathrm{pgcd}(d,0) = d\).
1 2 3 4 5 6 7 8 a = 50 b = 20 r = a%b a = b b = r r = a%b a = b b = r
Quelles sont les valeurs de a, b et r après la séquence d'instructions précédente ?
AAVx-OBJ: Méthode : On applique la méthode de l'empathie numérique pour suivre instruction après instruction les valeurs des variables a, b et r.
instruction | a | b | r |
---|---|---|---|
1 | 50 | ? | ? |
2 | 50 | 20 | ? |
3 | 50 | 20 | 10 |
4 | 20 | 20 | 10 |
5 | 20 | 10 | 10 |
6 | 20 | 10 | 0 |
7 | 10 | 20 | 0 |
8 | 10 | 0 | 0 |
AAVx-OBJ: Résultat : Après la séquence d'instructions, on a : a, b, r = 10, 0, 0
.
AAVx-OBJ: Vérification : On applique la décomposition en facteurs premiers des 2 nombres a et b pour en déduire leur pgcd.
\(\displaystyle\left.\begin{array}{r}a = 50 = 2^1\cdot 5^2\\b = 20 = 2^2\cdot 5^1\end{array}\right| \Rightarrow d = \mathrm{pgcd}(50,20) = 2^1\cdot 5^1 = 10\)
Or d'après l'exécution de l'algorithme d'Euclide : \(\mathrm{[ligne 2:]}\mathrm{pgcd}(50,20) = \mathrm{[5:]}\mathrm{pgcd}(20,10) = \mathrm{[8:]}\mathrm{pgcd}(10,0) = 10\).
On retrouve bien le même résultat dans les 2 cas.
Lors de l'évaluation d'un objectif, la mise en œuvre de la démarche MRV sera prise en compte. Ainsi, l'appréciation finale portera sur la réponse (R) mais également sur la méthode (M) et sur la vérification (V).
La plupart des solutions proposées pour les exercices de cet EniBook sur l'algorithmique le sont dans l'esprit de la démarche MRV.
Les enseignements du premier semestre postbac de l'ENIB sont organisés selon un principe de pédagogie inversée (flipped classrooms) : « leçons à la maison (lectures at home) et devoirs en classe (homework in classes) ».
![]()
- Auto-apprentissage
- Il n'y a pas de cours magistral : l'étudiant prend en charge l'acquisition des connaissances par auto-apprentissage en travaillant « à la maison » (hors Edt : hors emploi du temps) sur les ressources à sa disposition. Les séances en présentiel (tutorat) lui permettent de poser des questions aux enseignants sur les points qu'il juge délicats.
- Auto-planification
- L'étudiant avance à son rythme et planifie lui-même les dates auxquelles il se sent prêt à faire évaluer ses acquis d'apprentissage (learning outcomes) pour un objectif donné. L'outil de gestion Geops (Gestion des Evaluations d'Objectifs Pédagogiques par Semestre) permet l'auto-inscription de l'étudiant au(x) contrôle(s) qu'il souhaite passer. Les évaluations choisies par l'étudiant se font pendant les séances en présentiel. Une fois corrigées par l'enseignant, l'étudiant trouve ses résultats (note, validation, copie...) sur Geops.
Les principales ressources accompagnant les enseignements sont essentiellement de 2 types : des supports numériques interactifs et des supports « papier ».
- Supports numériques
- L'EniBook (Embedded numerical interactive book with open online kit) sur l'algorithmique est accessible depuis le site www.enib.fr/enibook/algorithmic.
- Supports « papier »
- Des documents sont disponibles au format
Les enseignements d'informatique du premier semestre postbac de l'Enib sont dispensés lors de séances de laboratoire et se partagent entre tutorat et évaluation.
- Tutorat
- Le tutorat est destiné à approfondir les questions des étudiants préalablement posées aux enseignants. Les interventions de l'enseignant peuvent être collectives mais sont le plus souvent individuellles.
- Evaluation
- C'est aux étudiants de prévoir les objectifs qu'ils veulent faire évaluer pendant ces séances de laboratoire. Les évaluations sont individuelles.
Les 3 premiers objectifs \(i\) de ce cours (instructions de base) sont évalués par 2 contrôles distincts : un contrôle de compréhension (\(C_{i_{comp}}\)) et un contrôle de programmation (\(C_{i_{prog}}\)).
Les 3 objectifs suivants \(j\) de ce cours (fonctions et procédure) sont évalués par 1 unique contrôle de programmation (\(C_{j_{prog}}\)).
Sachant :
- Contrôle de compréhension
- Il a pour but de mesurer le degré de mémorisation des connaissances factuelles ainsi que la compréhension des connaissances conceptuelles introduites dans le cours.
- Contrôle de programmation
- Il a pour but la mise en œuvre du langage Python pour vérifier la bonne application des connaissances procédurales introduites dans le cours.
Chaque contrôle est caractérisé par :
- une indication sur la semaine pendant laquelle il serait préférable de passer le contrôle;
- une indication sur la durée du contrôle;
- la note minimale exigée pour valider le contrôle.
Un objectif est considéré comme atteint, et donc capitalisé, lorsque le ou les 2 contrôles \(C_{{i}_{comp}}\) et \(C_{{i-j}_{prog}}\) sont validés.
Chaque chapitre de cet EniBook sur l'algorithmique se termine systématiquement par un ensemble d'exercices corrigés : des exercices de compréhension et des exercices de programmation.
Un EniBook de tests propose à titre d'entraînement des exemples de contrôle générés aléatoirement à partie des exercices proposés dans cet EniBook