mercredi 25 mars 2020

Et si on codait, reloaded !

Suite à ma première approche de la programmation avec Dr. Geo, j'avais prévu de faire une pause avec les élèves. Pour rappel l'idée était de faire des maths en programmant avec Dr. Geo. Un événement fortuit a permis de rebondir et de tenter une nouvelle approche.

Deux cerveaux valent mieux qu'un !

En salle des maîtres, un collègue de mathématiques et informatique, enseignant avec des élèves difficiles, m'a dit qu'il souhaitait leur enseigner la programmation avec Dr. Geo. Je lui ai expliqué que mon enseignement ne m'avait pas donné satisfaction et que j'allais arrêter. En m'exposant l'approche qu'il envisageait, nous avons commencé à réfléchir à des unités d'apprentissage basées sur l'exemple -- voir le livre Programmer avec Dr. Geo -- au périmètre précisément délimité. Comme les idées partaient dans tous les sens, nous avons convenu d'y dédier une réunion de brainstorming.

Unité d'apprentissage

La programmation traditionnelle, code écrit au clavier, est exigeante. La forme textuelle associée aux nombreux concepts comme les variables, les méthodes, les paramètres, les tests, les boucles, etc. constituent un mur conceptuel pour les élèves. Nous avons donc pensé introduire ces concepts les uns après les autres dans une succession d'unités d'enseignement, certains appellent ceci réduire le nombre de variables didactiques.
Par ailleurs, pour créer un cadre rassurant, chaque unité a la même structure :
  • Une accroche expliquant l'objectif de l'unité ;
  • Une partie exemple comprenant un code source à écrire, la figure obtenue et quelques commentaires de une ou deux phrases. Mais aucune explication précise sur le code lui-même ;
  • Une partie pratique avec des figures dont l'apprenant doit déterminer le code source. Bien sûr ces figures s'obtiennent par quelques modifications du code source de l'exemple ;
  • Un glossaire expliquant plus précisément les concepts nouveaux du code source de l'exemple.
Le code source s'écrit en français, c'est une difficulté de moins par rapport à de la programmation avec des mots clés anglais. Aussi la première unité introduit uniquement le concept d'envoi de messages. Le thème est le triangle.
Pour être précis, le code source de l'exemple introduit :
  • Le message unaire -- DrGeoFigure nouveau -- pour demander une nouvelle figure ;
  • Le message binaire -- 0 @ 0 -- pour désigner les coordonnées d'un point ;
  • Le message à mot clé -- segmentDe: 0 @ 0 a: 6 @ 0 -- pour demander la création d'un segment dont les arguments sont les coordonnées de ses extrémités. 
L'utilisation de la cascade de messages --  -- évite l'emploi d'une variable informatique pour désigner la figure.
L'essentiel de la partie pratique est au verso avec uniquement des figures comme déjà expliqué. L'élève modifie le code source de l'exemple pour obtenir la figure. Il doit donc comprendre comment le code source crée un segment et déterminer les coordonnées des sommets.

Enfin la dernière partie regroupe dans le glossaire les explications sur les messages utilisés. Dans cette unité aucune explication sur la précédence des messages n'est donnée, c'est autant prématuré qu'inutile.

Quels résultats ?

Nous avons utilisé cette unité d'apprentissage -- et les suivantes -- avec quatre classes différentes d'élèves de 12 à 14 ans. Ils ont pratiqué la programmation avec cette unité et les suivantes sur une durée de 3 ou 4 périodes de 45 min.
Avec ce format, la prise en main par les apprenants est efficace : ils démarrent rapidement l'activité en autonomie. En effet la partie exemple requière l'assistance de l'enseignant uniquement pour des points techniques qui, au fur et à mesure des périodes d'enseignement, est de moins en moins nécessaire.
Lorsqu'ils abordent la partie pratique, les apprenants ont alors besoin d'aides, à la fois méthodologiques et théoriques :
  • Méthodologiques. Faire le lien entre une partie du code de l'exemple et la partie correspondante de la figure. Utiliser les figures pour y annoter les coordonnées des sommets du triangle.
  • Théoriques. Lire et écrire les coordonnées cartésiennes d'un point dans un repère du plan. Coder les coordonnées d'un point.
Les élèves sont très autonomes, l'enseignant est donc disponibles pour aider individuellement  sur des points techniques. Les apprenants procèdent par la méthode essai et erreur, le feedback immédiat de la figure étant à la fois un élément incitateur et indicateur de la boucle méthodologique.

Par ailleurs, certains élèves dévorent les unités d'apprentissage les unes après les autres. Dans une classe, le décalage dans la progression va jusqu'à 2 ou 3 unités, c'est une belle différentiation pédagogique. Les élèves progressant rapidement se voient aussi assignés le rôle de tuteur.

Quels apports pédagogiques ?

Les apports pédagogiques couvrent plusieurs champs. Ils sont constatés mais non mesurés, néanmoins basés sur l'intuition de l'enseignant.
  • La rigueur. Recopier du code est exigeant, les erreurs de syntaxe arrivent vite : un espace de trop, un point virgule manquant. Heureusement, le système de saisie colorie en rouge les fautes.
  • La concentration. Écrire le code d'un exemple requiert concentration, ne privons pas les élèves de cette opportunité de s'y entraîner.
  • Renforcement mathématiques. Des connaissances mathématiques sont réinvesties pour résoudre les exercices, parfois celles-ci sont erronées ou parcellaires c'est donc une opportunité pour les corriger ou les renforcer.
  • Conception informatique. Entrevoir ce qu'il y a derrière une application, à savoir un programme décrit par un code source. Ce qui était abstrait -- dans l'ether -- devient alors de la culture générale pour l'élève.
J'ai eu beaucoup de satisfaction pédagogique à prodiguer ce cours sous cette forme. A ce jour une dizaine d'unités ont été écrites. L’enseignement planifié n'a pu aboutir, l'épidémie du Covid19 étant passée par là. Ce n'est que partie remise.

Aucun commentaire:

Enregistrer un commentaire