Stratégies et conseils pour enseigner le débogage
Quel que soit le niveau de compétence du programmeur, le débogage est inévitable et fait partie intégrante du codage » 1.
Cela peut sembler une déclaration assez évidente, mais il peut être difficile de l'exécuter de manière confortable et productive. Dans de nombreux contextes d'éducation formelle, l'accent est mis sur des produits d'apprentissage complets et corrects. Bien que nous puissions utiliser des clichés comme « mes erreurs sont mes meilleurs enseignants », ces sentiments sont rarement valorisés d'une manière qui rend la réflexion des élèves sur l'erreur et sa solution vraiment visible et fait partie de la culture de la salle de classe. Cependant, les STEM, et le codage et la robotique en particulier, offrent des moyens authentiques de pratiquer ce que nous prêchons. Les élèves vont avoir des bugs dans leur code, des erreurs logiques dans la conception du programme et d'autres erreurs lorsqu'ils apprendront à coder et à relever des défis en classe. Alors, comment pouvons-nous tirer le meilleur parti de cette opportunité, non seulement pour enseigner aux étudiants les concepts de codage, mais aussi pour célébrer leurs erreurs en tant qu'étapes importantes sur le chemin de l'apprentissage ? Le test et le débogage seront toujours une sorte de processus réactif, auquel il n'y a pas de formule claire et concrète. Il existe cependant des « étapes » et des stratégies générales qui peuvent être mises en œuvre avec les élèves, pour les aider à s'engager dans ce processus de manière productive et collaborative.
Cela commence par une culture de classe positive autour du débogage et de la réflexion conceptuelle sur le code. Avoir une culture de classe plus large qui considère les erreurs comme productives et non punitives est extrêmement important si nous voulons que les élèves soient véritablement engagés dans le processus de test et de débogage. S'ils essaient de cacher des erreurs ou ont peur de parler de leur logique avec les autres, le processus de débogage sera beaucoup plus difficile et moins utile à l'apprentissage. Il existe de nombreuses façons de le faire, de célébrer les erreurs avec des choses comme un « Bug Museum » ou un « Bug Hall of Fame »1 où les étudiants et les enseignants postent des erreurs de codage et leurs correctifs sur lesquels tous peuvent réfléchir. Les enseignants ont récompensé les élèves pour avoir trouvé des insectes en distribuant des jouets en plastique chaque fois qu'un bug était « annoncé » à la classe, rendant le débogage non seulement nécessaire, mais amusant !
De plus, se référer continuellement à l'objectif conceptuel d'un projet ou d'un défi aide les élèves à garder à l'esprit la vue d'ensemble de leur projet pendant qu'ils travaillent. En parlant fréquemment de ce qu'ils essaient de faire sur le plan conceptuel, ou en écrivant un pseudo-code, les élèves peuvent attraper des bugs potentiels avant qu'ils ne grandissent en taille ou en portée. Des stratégies telles que le « réengagement de groupe » peuvent être utiles à toute une classe pour examiner ensemble un projet mis sur écoute, identifier ce qui fonctionne par rapport à l'objectif du projet et pourquoi, puis quels sont les bugs. Les élèves peuvent voir un projet de codage particulier à travers de nombreux yeux et apprendre à parler d'éléments intéressants de code et de stratégies créatives pour résoudre des problèmes qu'ils peuvent ensuite appliquer à leurs propres projets.
La première « étape » du débogage consiste à identifier un problème dans le projet. Les élèves ne peuvent pas résoudre un problème s'ils ne savent pas qu'il en existe un, et pour ce faire, ils doivent être en mesure d'articuler quel est l'objectif du projet et de le comparer à ce que le projet fait réellement. Dans les projets simples, comme coder un robot pour conduire dans un carré, c'est plus facile à faire. Au fur et à mesure que les projets deviennent plus complexes, comme le codage d'un robot pour identifier et déplacer un cube rouge, cela peut sembler plus intimidant. Du côté positif, il y a un signe très visible et tangible qu'un projet ne fonctionne pas – tant que les étudiants savent ce que le projet était destiné à faire.
- Utiliser régulièrement un pseudo-code peut être une stratégie utile lorsque les élèves sont confrontés à un projet qui « ne fonctionne pas ». Écrire, en termes clairs et spécifiques, l'objectif du projet et ce que le robot ou le code doit faire pour atteindre cet objectif peut donner aux étudiants un point de départ pour s'assurer que leur projet et leur code sont sur la même page. Par exemple, si vous codez un robot pour qu'il conduise dans un carré et que le robot ne conduit que dans une ligne, il y a une erreur claire et visible.
L'étape suivante consiste à trouver le bogue dans le code. Maintenant que les élèves savent qu'il y a un problème, ils peuvent prendre des mesures pour trouver le problème dans le code. En utilisant ce qu'ils savent sur l'objectif du projet, les élèves doivent d'abord examiner quelles parties du code fonctionnent comme prévu. Ceci est particulièrement important pour les tâches en plusieurs parties, comme le codage d'un robot pour identifier un cube rouge et le déplacer. Voici plusieurs stratégies qui peuvent être utilisées pour aider les élèves à localiser un bogue :

- Examinez l'exécution du projet un bloc à la fois – Cela peut être utile pour les projets courts, où la séquence et le déroulement du projet sont plus simples et où les étudiants peuvent plus facilement repérer les irrégularités. Pour faciliter ce processus, la fonctionnalité « Étape » dans VEXcode 123, VEXcode GO et VEXcode VR peut être utilisée pour exécuter le projet un bloc ou une étape à la fois. Lorsque vous exécutez un projet de cette façon, il peut devenir très clair quand et où un projet tourne mal. Pour les projets plus longs, la fonction de mise en surbrillance de VEXcode 123, VEXcode GO et VEXcode VR met en surbrillance chaque bloc lorsqu'il est exécuté par le robot, afin de rendre plus visible le lien entre un bloc et le comportement du robot. Les élèves peuvent regarder le robot et la mise en surbrillance, et mettre en pause le projet sur ou autour de l'erreur au fur et à mesure qu'ils la voient se produire.
- Tester et déboguer un projet en plusieurs parties – C'est une stratégie utile lors du développement d'un projet plus long ou plus complexe, et c'est un bon moyen pour les étudiants de développer et de créer leurs projets. Les élèves doivent tester et déboguer tôt et souvent pendant le codage, de sorte que chaque comportement, ou ensemble de comportements, soit codé et testé. De cette façon, les bugs dans le code sont détectés plus rapidement et sont plus facilement corrigés. Travailler en petits morceaux peut aider les élèves à éviter la frustration et à ne pas se décourager lorsqu'un « projet entier » ne fonctionne pas comme prévu, ce qui permet aux enseignants et aux élèves de maintenir plus facilement des niveaux élevés de motivation et d'engagement. Si les étudiants testent un projet complexe en même temps, ils peuvent ensuite décomposer le projet en plus petits morceaux pour exécuter et déboguer une section du code à la fois.
Par exemple, en utilisant l'exemple du codage d'un robot pour détecter et déplacer un cube rouge, les élèves peuvent tester des parties individuelles de toute cette tâche – comme conduire jusqu'au cube, rapporter correctement la couleur du cube avec le capteur, saisir le cube, etc. Idéalement, cela se fait au fur et à mesure que le projet est en cours de construction, mais s'ils arrivent à la fin, diviser le projet en sections donne aux étudiants moins à traiter en même temps, et ils peuvent méthodiquement se déplacer dans le projet pour le réparer. - Utilisez des codes d'erreur – C'est une stratégie utile lorsque vous traitez avec des projets basés sur du texte, comme VEXcode VR Python, où les erreurs de ligne seront imprimées à l'écran. Les élèves peuvent utiliser ces informations, comme la ligne de code problématique, comme un moyen de réduire leur erreur. Gardez à l'esprit que cela est bon pour les erreurs de syntaxe, mais n'identifiera pas nécessairement les erreurs logiques dans la conception du programme.
La dernière « étape » consiste maintenant à corriger l'erreur dans le projet. Une fois que les élèves ont identifié que leur projet ne s'exécute pas comme prévu et localisé ce qui ne va pas dans le code, ils peuvent maintenant déterminer pourquoi ce bogue existe. S'agit-il d'une simple erreur de syntaxe, comme une faute d'orthographe dans une commande ? Ou s'agit-il d'une erreur logique, lorsque la conception ou le flux du programme est incorrect ? Cela peut prendre plusieurs tentatives pour trouver une solution de travail, et ce n'est pas seulement correct, mais cela peut encourager les élèves à approfondir leur compréhension des concepts et des structures de codage. Encore une fois, avec une attitude positive à l'égard du débogage, chaque partie du processus est une expérience d'apprentissage. Voici quelques stratégies que vous pouvez utiliser pour aider les élèves à trouver des solutions possibles :
- Lisez le code pour les irrégularités – Ceci est particulièrement utile lorsque vous travaillez avec un code d'erreur ou une erreur de syntaxe. Prêter une attention particulière aux détails tels que l'orthographe, la ponctuation et l'indentation peut permettre aux élèves de corriger un bug en quelques touches du clavier. Dans VEXcode, les étudiants peuvent toujours utiliser l'aide intégrée pour en savoir plus sur la façon dont chaque commande est écrite et utilisée dans les projets.
- Rechercher une pièce manquante – Une stratégie utile pour identifier les erreurs logiques dans un projet consiste à poser la simple question suivante : « Avez-vous manqué une étape ? » Les élèves peuvent sauter une étape qui leur semble intuitive, mais qui est nécessaire pour que le robot (qui ne peut pas comprendre) accomplisse la tâche. Il peut être utile de se référer au pseudo-code qui s'aligne sur cette partie du code, afin de s'assurer que les élèves ont décomposé le projet en étapes les plus petites possibles. Parler des comportements à haute voix en groupe ou avec l'enseignant peut aider les élèves à identifier les « trous » dans leur logique ou leur projet.
- Comparez le code à un exemple de travail – Les étudiants peuvent utiliser des projets précédents réussis ou des exemples de projets intégrés dans VEXcode pour voir comment ils sont construits, et comparer cela à leur code existant. La collaboration est essentielle ici – encouragez les élèves à examiner les projets des autres élèves dans la classe pour apprendre comment les autres groupes donnent un sens à la tâche et à leurs projets. Si plusieurs groupes ont le même problème, cela peut être un bon moment pour utiliser cette évaluation formative pour avoir une discussion de classe entière et déboguer ensemble.
- « Zoom arrière » et prendre du recul – Si les élèves ont du mal à trouver une solution, il peut être utile pour eux de s'éloigner du code lui-même, et de regarder l'objectif plus large du projet, et comment ils ont conçu leur projet pour accomplir cette tâche. « Passer d'un niveau d'abstraction à l'autre [peut] aider les élèves à voir les erreurs dans le code qu'ils avaient négligé [et]...ils peuvent également découvrir que le bogue n'est pas dans le code mais plutôt dans leur approche du problème. »1.
Comme pour tout, plus les élèves s'entraînent à tester et à déboguer, et à parler du processus de manière positive et constructive, plus leur confort et leur confiance en lui deviendront grands. Donner aux étudiants une pratique supplémentaire, en dehors du débogage qui se produit naturellement dans un défi de codage, aide à renforcer les capacités collectives non seulement pour les stratégies et les compétences autour du débogage, mais aussi pour développer une culture positive autour de la résolution collaborative de problèmes. Quelle que soit la stratégie que vous utilisez, trouver des moyens d'encourager et d'intégrer les célébrations de l'apprentissage, même celles aussi simples que le débogage d'un projet, aide les élèves à s'engager et à être fiers du processus d'apprentissage, pas seulement du produit.