Résumé du livre : Enseigner l'informatique

Il n'y a quasiment pas d'ouvrage sur le domaine. Le seul que je connaisse est le suivant :

Enseigner l'informatique
Werner Hartmann, Michael Näf, Raimond Reichert
Collection IRIS
Springer
2013
ISBN 978--28178-0261-9

Le résumé que je fais ici n'est qu'un résumé. Il ne dispense pas de lire le livre, riche en situations concrètes et en exemples.

ChapîtreRésuméCommentaire
Première partie : Classification et délimitation
Les enseignants d'informatique enseignent l'informatique

Ce n'est pas parce qu'on est enseignant en informatique qu'on est un expert en TIC, ou bien sur tel ou tel logiciel.

Les professeurs d'informatique ne sont pas en charge de la maintenance

Tout est dit : chacun son métier ; en théorie l'infrastructure informatique n'a pas a être gérée par les enseignants d'informatique

Il s'agit ici de voeux pieux. Dans beaucoup d'établissements, ce sont les enseignants d'informatique qui gère le matériel et le système. De plus, si jamais une maintenance externe existe, elle doit rester au service de la pédagogie et n'a rien à imposer sans raison.

Les enseignants d'informatique n'ont pas la priorité auprès de l'assistance TIC

Si un service d'assistance existe, les enseignants d'informatique n'ont pas à avoir les droits d'administration

Formation continue des enseignants d'informatique

L'informatique est un domaine qui évolue très vite. Il faut donc se maintenir perpétuellement à jour sur les tendances du domaine, l'évolution du matériel, etc.

Il s'agit en effet d'une tâche indispensable. Des revues comme "Programmez" sont une bonne source. Ne pas hésiter notamment à s'abonner à leur mailing-list (c'est gratuit) pour recevoir des nouvelles hebdomadaires du domaine.

Deuxième partie : Choix du contenu des cours
Connaissance des concepts et des produits

Les enseignants doivent connaître les concepts et leur instanciation.

Adapter le contenu des cours au public visé

Le contenu des cours doit être adapté aux compétences et aux intérêts des élèves.

Des élèves de lycée peuvent avoir des centres d'intérêt très disparates. Proposer un projet qui parlera à tout le monde est donc quasiment impossible. Par contre, il est possible de proposer des projets sur des domaines relativement variés pour espérer que tout le monde trouve chaussure à son pied. Ne pas hésiter, à ce niveau, à travailler en réseau pour multiplier les idées de projet.

Idées fondamentales

Les technologies évoluent tellement vite qu'un cours entièrement fondé sur celles-ci devient très vite obsolète. Il est donc important qu'un cours repose sur des concepts beaucoup plus péreines. Cependant, l'enseignant doit se maintenir à jour pour que ses TP demeurent adaptés aux technologies du moment.

Malgré tout, dans certains domaines, il sera difficile d'éviter tout aspect "technologique" dans le cours

Troisième partie : organisation de l'enseignement
Les différentes approches de l'enseignement de l'informatique

Une approche descendante totale (tous les concepts avant leur instanciation) risque d'être peu attractive. Inversement, Une approche purement ascendante risque de coincer assez vite car l'absence de connaissance des concepts manquera quand la phase pratique va se complexifier.

Il n'y a pas de recette toute faite, il faut souvent varier les démarches.

Personnellement, je procède souvent ainsi :

  1. Présentation d'un problème concret, avec un première modélisation simplifiée, éventuellement fausse
  2. Formalisation théorique solide, avec des liens réguliers avec le problème de départ
  3. Retour au concret sur le problème initial
  4. Applicatio à d'autres exemples concrets
Objectifs pédagogiques dans l'enseignement de l'informatique

Les élèves ont souvent du mal à comprendre ce qu'ils doivent retenir de leurs cours d'informatique. Des objectifs pédagogiques clairs et structurés doivent leur être présentés. 4 niveaux sont proposés : des idées directrices (pourquoi enseigner le sujet en question) aux objectifs pédagogiques opérationnels (ce sur quoi ils peuvent être évalués, et comment ils peuvent être évalués).

Les cours d'informatique doivent être soigneusement planifiés

Ne pas négliger les contraintes matériels et le type de public dans la préparation de son enseignement.

Dès qu'on passe sur machine les élèves sont incroyablement lents. Il faut tenir compte de cette lenteur dans la planification de ses activités.

Quatrième partie : Méthodes d'enseignement
Méthodes pour l'enseignement de l'informatique

Utiliser toujours la même méthode peut rapidement devenir monotone. Dans le cadre de l'informatique, il faut privilégier les méthodes qui personnalisent l'apprentissage et qui prennent en considération les choses difficiles.

Pédagogie expérientielle

Faire apprendre via une longue séance pratique n'est pas adapté : les rythmes de chacun sont différents, les problèmes ne vont pas être les mêmes, et interrompre les élèves alors qu'ils sont en train de développer n'est pas idéal (ils ne suivent pas forcément les explications). Il vaut mieux commencer par un vrai cours, puis sur une courte durée (10 à 30 minutes), leur faire découvrir un point nouveau (aisément accessible) par la pratique.

Une possibilité est d'utiliser les passages expérientielles pour faire tomber les élèves sur les cas particuliers, les situations compliquées, afin d'attiser leur intérêt pour la présentation à suivre de ces parties du cours quelques fois un peu ennuyeuses.

Travail en groupe

2 méthodes de travail en groupe sont proposées : la méthode du puzzle et le travail en partenariat :

  • méthode du puzzle : on constitue des groupes d'élèves qui vont devoir chacun acquérir une nouvelle connaissance/compétence (idéalement, des groupes de niveau afin de donner à assimiler aux élèves les plus en difficulté les connaissances les plus simples). Ainsi, chaque élève devient un expert dans un domaine. Dans un deuxième temps, on recrée des groupes avec un expert par domaine. Chacun va devoir faire acquérir les compétences de son domaine aux autres.
  • travail en partenariat : il s'agit d'un travail à 2, où chaque élève a une tâche bien précise, qui complète le travail de l'autre. Cela peut consister, par exemple en l'exécution d'un programme pas à pas : un élève lit les instructions, l'autre les applique sur des données.

Une mise en oeuvre possible du travail en partenariat est le développement en binôme, version speed dating : toutes les 5 minutes, les rôles sont inversés.

Une autre possibilité de travail en groupe, reposant là encore sur le travail en binôme version speed dating, est la suivante : On crée des groupes de 6 avec 3 binomes (pilote, co-pilote). Le binôme (A,B) développe le progamme P1, le binôme (C, D) le programme P2, et le binôme (E,F) le programme P3. Toutes les 5 minutes, on décale : [P1, (B,C)],[P2, (D,E), [P3, (E, A)]. après un certaine nombre de tours (ça peut être plus que 6), Les 3 programmes ont été développé et tout le monde doit les comprendre plus ou moins.

Travaux dirigés

La vitesse d'exécution sur des problèmes pratiques diffère souvent beaucoup d'un élève à l'autre. Il faut donc concevoir des TPs en 2 parties : la partie fondamentale, que tout le monde devra pouvoir faire, et la partie optionnelle, qui permettra d'occuper les plus rapides pour éviter qu'ils ne s'ennuient et se démotivent.

Des pistes pour prévoir du travail supplémentaire aux plus rapides sont notamment : améliorer l'algorithme, développer une illustration graphique de l'algorithme, implanter un autre algorithme effectuant la même tâche et comparer.

Apprentissage par la découverte

Ce type d'apprentissage permet de stimuler l'autonomie et de personnaliser l'enseignement. Il ne peut cependant être appliqué qu'à des domaines assez ouverts.

Il est possible de mettre en oeuvre ce type d'apprentissage pour la découverte d'une API. Ce peut être une exploration approfondie du module random, ou de matplotlib.

Pédagogie de projet

L'essentiel du travail d'un informaticien consiste à travailler sur de gros projets, chose totalement irréalisable en cours. Du travail très guidé ne permet pas non plus aux élèves de bien percevoir toutes les problématiques liées au travail sur des projets. La pédagogie de projet permet malgré tout d'en proposer un premier aperçu, en reprenant le modèle à 7 niveaux de Karl Frey :

  • Initiative du projet : lancement d'une idée
  • Délimitation : on analyse ce qui va vraiment être faisable
  • Plan de projet : définition des objectifs et procédures ; affectations des activités aux différentes personnes
  • Exécution : réalisation et évaluation des activités ; adaptation du plan si nécessaire
  • Clôture : présentation du résultat
  • Échéances fixes : important pour la synchronisation notamment
  • Méta-interaction : la maîtrise de la communication au sein du groupe est un des objectifs importants de cette démarche

Travailler sur un projet fait effectivement partie intégrante du développement informatique, et il est indispensable que les élèves découvrent cet aspect de la discipline. Ce sera d'ailleurs imposé dans le programme de Terminale. Par contre, la démarche proposée ici présente quelques inconvénients. Elle implique en effet que les élèves puissent faire des estimations assez précises des différentes tâches du projet. Ce travail est déjà très difficile à réaliser pour des développeurs expérimentés. Autant dire qu'il a très peu de chance d'aboutir à quelque chose de réaliste s'il est fait par des élèves. Je conseillerais plutôt de s'orienter vers une démarche agile assez guidée.

Cinquième partie : techniques d'enseignement
Les structurants préalables pour en venir à l'essentiel

Introduire les nouveaux concepts par du vocabulaire simple, en utilisant par exemple les métaphores.

Les métaphores sont souvent utilisées en informatique (métaphore du "bureau" pour les environnements graphiques par exemple). C'est une bonne idée, mais il est important de bien faire comprendre qu'il y a métaphore, au risque de grosses incompréhensions.

Des abstractions qui deviennent concrètes

L'essentiel des notions manipulées en informatique est abstrait. Essayer autant que faire ce peut de montrer des conséquences concrètes prouvant ces aspects abstraits (animation d'algorithme, informatique déconnectée).

Un algorithme de tri peut être pratiqué "manuellement" pour trier des cartes, par exemple (un jeu comme "The mind" permet d'avoir pour un prix raisonnable des cartes de 1 à 100). Il est même possible de faire appliquer différents algorithmes de tri simultanément à différentes groupes (mais plusieurs groupes par algorithme) pour comparer la complexité des algorithmes.

L'algorithme des k plus proches voisins peut être illustré dans la reconnaissance de couleurs à partir de leur décomposition (R, V, B).

Les visualisations pour découvrir l'invisible

Utiliser des outils pour visualiser des aspects "cachés" (analyse du trafic réseau, débuggueur, etc.)

Il y a un débuggueur fourni avec Python (idle-python3.6). On peut aussi installer ipdb (pip install ipdb).; il y a aussi le débuggueur de firefox pour javascript. L'exécution en pas-à-pas avec le tableau représentant l'état de la mémoire est aussi une excellente idée.

Lire avant d'écrire

Fournir des exemples de code à analyser aux étudiants afin qu'ils ne partent pas dans le vide mais qu'ils aient des sources d'inspiration de qualité.

Tout comme la lecture fait partie intégrante des cours de français, la lecture de code devrait faire partie intégrante des cours d'informatique. Mais, tout commme on n'enseigne pas à bien écrire en faisant lire des forums sur le Web, on doit porter une grande attention à la qualité du code fourni aux élèves.

Il faut cependant éviter de donner à lire un code qui utilise des notions que ne connaissent pas les élèves sous le prétexte qu'il est ainsi de meilleure qualité.