Tracer du code ligne par ligne : pourquoi lire vient avant d’écrire

Tracer, c’est exécuter le code dans sa tête, une ligne à la fois. Pourquoi ceux qui ne savent pas tracer peinent à écrire du code, et comment expliquer une trace en vidéo.

Par l’équipe Chasca 6 min de lecture

Cette vidéo a été faite avec la compétence Problèmes de code. La voix off est en anglais. Lire la transcription

Tracer du code, c’est le suivre comme le fait l’ordinateur, une ligne à la fois, en notant la valeur de chaque variable chaque fois qu’elle change. Les élèves qui ne savent pas tracer de façon fiable peinent à écrire des programmes, ce qui explique que les jurys d’examen l’évaluent directement et que certains chercheurs plaident pour l’enseigner avant l’écriture de code.

Pourquoi le traçage compte-t-il autant ?

Parce que beaucoup d’étudiants terminent leur premier cours de programmation sans savoir programmer, et que la faiblesse en traçage y est pour quelque chose. En 2001, un groupe de travail dirigé par Michael McCracken a fait passer à des étudiants de première année d’informatique, dans quatre universités, une évaluation d’essai en programmation : les 216 étudiants ont obtenu en moyenne 22,89 sur 110.

Un groupe de suivi a cherché pourquoi. Raymond Lister et ses collègues ont testé des étudiants de sept pays sur la lecture et le traçage de courts morceaux de code : prédire ce qu’un court morceau de code produirait, et choisir la ligne manquante d’un code presque terminé. Beaucoup étaient faibles dans les deux cas, ce que les auteurs ont interprété comme une maîtrise fragile des compétences dont dépend la résolution de problèmes.

Cela a façonné une idée pédagogique. Dans une théorie de l’enseignement de la programmation pour débutants publiée en 2019, Benjamin Xie et ses collègues de l’université de Washington distinguent quatre compétences, le traçage venant en premier, et plaident pour enseigner la lecture avant l’écriture. Dans leur étude exploratoire, un support qui enseignait les compétences dans cet ordre a conduit à une meilleure réalisation des exercices d’entraînement, à moins d’erreurs et à une meilleure compréhension lors d’un post-test.

Comment le traçage est-il évalué ?

Directement. Les programmes de GCSE d’informatique en Angleterre l’intègrent. Le programme d’AQA nomme le traçage de code parmi les compétences évaluées par sa première épreuve et attend des élèves qu’ils utilisent des tables de trace pour comprendre comment fonctionnent des algorithmes simples et à quoi ils servent. Celui d’OCR exige des élèves qu’ils créent et utilisent des tables de trace pour suivre un algorithme, et qu’ils repèrent les erreurs dans du code et proposent des corrections. Les deux demandent aussi des tables de vérité, et celui d’AQA inclut de simples requêtes SQL.

À quoi ressemble une trace ?

Prenons une courte question du type de celles d’une épreuve de GCSE : qu’affiche ce programme ?

total = 0
for n in range(1, 5):
    total += n
print(total)

Une trace suit l’ordinateur un changement à la fois :

Étape n total
Départ 0
Premier passage 1 1
Deuxième passage 2 3
Troisième passage 3 6
Quatrième passage 4 10

L’idée qui compte, c’est que range(1, 5) s’arrête avant 5 : la boucle s’exécute donc quatre fois et le programme affiche 10. Un élève qui répond 15 a exécuté la boucle une fois de trop, et une bonne explication le dit.

Pourquoi le traçage est-il difficile à apprendre seul ?

  • Exécuter le code montre la sortie, pas le pourquoi. L’élève voit « 10 » et ne sait toujours pas quelle ligne l’a produit.
  • Une table de trace terminée montre tout d’un coup, si bien que l’ordre dans lequel les valeurs ont changé, qui est justement l’essentiel, est perdu.
  • Le temps de classe est court. Un enseignant peut tracer un ou deux exemples au tableau ; la fiche de devoirs en compte bien plus.
  • Les explications en ligne couvrent des sujets, pas l’extrait exact sur lequel l’élève est bloqué, et rarement dans sa propre langue, avec les mots du code laissés tels quels.

Que montre une bonne vidéo de traçage ?

  1. Le code, à l’écran tout du long, à côté du raisonnement, avec la ligne en cours d’exécution marquée.
  2. Chaque valeur à mesure qu’elle change, dite et écrite à raison d’un changement par ligne : « i = 2 → total = 3 ».
  3. L’idée qui compte, nommée : la boucle s’exécute quatre fois, la division entière écarte le reste, le cas de base arrête la récursion.
  4. Pour une erreur, la ligne, pourquoi elle échoue et la correction. Pour une conversion de nombre, chaque division par la base. Pour le SQL, quelles lignes sont conservées et pourquoi.
  5. La sortie encadrée, puis une vérification rapide.
  6. Le code lu comme le disent les programmeurs, noms et mots-clés en anglais, même quand l’explication est dans une autre langue.

Garder ensemble le code et la trace est important. La méta-analyse de 50 études de Paul Ginns, en 2006, a montré que rapprocher les informations liées, dans l’espace et dans le temps, procure des gains d’apprentissage substantiels, surtout avec un contenu complexe. Nous présentons davantage de ces recherches dans pourquoi les vidéos sur tableau blanc fonctionnent.

Que fait la compétence Problèmes de code ?

Nous développons Chasca : gardez-le en tête pour notre part de cet article. La compétence Problèmes de code traite des questions d’informatique sur un tableau d’enseignant :

  • Apportez le code et la question, saisis ou collés, ou sous forme de photos, d’un PDF ou d’un document de la fiche, jusqu’à 20 pages : questions de sortie, recherche d’erreurs, systèmes de numération, tables de vérité et SQL sur une petite table.
  • Votre code se place à côté du raisonnement dès le début, copié à l’identique, et il est parcouru comme l’ordinateur l’exécute, avec la ligne importante surlignée.
  • La trace s’écrit sur le tableau un changement à la fois, à mesure qu’il est dit. Les tables de trace, les tables de vérité et les résultats de requêtes sont dessinés sous forme de tableaux, un algorithme donné en étapes sous forme d’organigramme, et les appels récursifs sous forme d’arbre.
  • Les mots du code sont lus comme les disent les programmeurs, en anglais, au sein d’une narration dans votre langue, avec l’un des 30 narrateurs ou votre propre voix.
  • Chaque réponse est résolue une seconde fois, séparément, avant d’être encadrée. Si quelque chose ne concorde pas, ou ne concorde pas avec votre corrigé, la page de la vidéo vous dit quelle question vérifier.
  • Demandez des questions sur un sujet sans en fournir, et elle rédige pour vous de courts codes dans le style d’un examen, en Python sauf si vous nommez un autre langage.

À qui s’adresse-t-elle ?

Aux enseignants d’informatique qui veulent une trace détaillée pour chaque question d’une fiche, aux répétiteurs qui préparent des élèves aux examens scolaires, et aux formateurs de cours d’introduction à la programmation dont les étudiants doivent lire le code avec aisance avant de l’écrire.

Que ne fait-elle pas ?

  • Exécuter votre code. Il est tracé comme le ferait un enseignant au tableau, puis vérifié en le résolvant à nouveau ; il n’est pas exécuté sur un ordinateur.
  • Dessiner pour l’instant des schémas de portes logiques. Les tables de vérité, oui ; les symboles de portes, pas encore.
  • Enseigner un langage entier. Elle explique des questions, une à la fois.

Comment en créer une ?

  1. Ouvrez « Code problems » dans Chasca.
  2. Collez le code et la question, avec ses options et votre corrigé s’il y en a, ou ajoutez une photo ou un PDF de la fiche.
  3. Choisissez la langue, la voix et un tableau noir ou un tableau blanc, puis créez la vidéo.
  4. Consultez la page de la vidéo pour repérer une éventuelle question signalée avant de la partager.

Vos deux premières vidéos sont gratuites, jusqu’à une minute chacune, avec filigrane et sans carte bancaire ; une vidéo gratuite couvre les premières questions qui tiennent dans sa minute. Les offres démarrent à $9.99 par mois (tarifs).

Sources

Transcription de la vidéo Ce que dit le narrateur dans la vidéo explicative de 2:25 ci-dessus.

In this video, we trace a Python list and convert a decimal number to binary and hexadecimal.

Question one. What is the output?

First, x equals a list containing one, two, and three.

Next, y equals x, so both names refer to the same list. The call y dot append with four adds four to that shared list. Now x and y both refer to the list containing one, two, three, and four.

The print call evaluates len of x, which is four.

Notice that assigning y equals x does not copy the list. Hence, the output is four.

Question two. Convert forty-five to binary, then to hexadecimal.

First, repeatedly divide forty-five by two, keeping each remainder. Forty-five divided by two gives twenty-two with remainder one.

Twenty-two divided by two gives eleven with remainder zero.

Eleven divided by two gives five with remainder one.

Five divided by two gives two with remainder one.

Two divided by two gives one with remainder zero.

One divided by two gives zero with remainder one.

Reading the remainders from bottom to top gives one zero one one zero one in binary. For hexadecimal, divide forty-five by sixteen to get two with remainder thirteen.

Then divide two by sixteen to get zero with remainder two.

In hexadecimal, thirteen is written as D. Reading those remainders from bottom to top gives two D. As a check, two times sixteen plus thirteen equals forty-five.

Hence, forty-five is one zero one one zero one in binary and two D in hexadecimal.

Questions fréquentes

Tracer, c’est suivre un programme ligne par ligne comme le ferait l’ordinateur, en notant la valeur de chaque variable chaque fois qu’elle change, pour prédire ce que le programme fait ou affiche. La table de trace est la manière habituelle de l’enregistrer.

Les preuves vont plutôt dans ce sens. Une théorie de l’enseignement de la programmation pour débutants, publiée en 2019, place le traçage en premier, et dans son étude exploratoire, enseigner les compétences dans cet ordre a amélioré la réalisation des exercices et réduit les erreurs.

Donnez à chaque variable, et à la sortie, sa propre colonne. Parcourez le code ligne par ligne et ajoutez une ligne chaque fois qu’une valeur change ; la dernière ligne contient les valeurs finales et la sortie.

Parce qu’ils doivent garder chaque variable en tête tout en suivant l’ordre dans lequel l’ordinateur exécute les lignes. Une étude de 2004 menée dans sept pays a trouvé que beaucoup de programmeurs débutants prédisaient mal ce que produiraient de courts morceaux de code.

Non. La compétence Problèmes de code trace le code comme le ferait un enseignant au tableau, et chaque réponse est résolue une seconde fois, séparément, avant d’être encadrée. Si les deux divergent, la page de la vidéo vous indique quelle question vérifier.

Les questions de sortie et de traçage, la recherche et la correction d’erreurs, les conversions de nombres comme décimal vers binaire, les tables de vérité et les requêtes SQL sur une petite table. Il ne dessine pas encore de schémas de portes logiques.

À lire aussi

Votre prochaine vidéo explicative prend moins d’une minute.

Vos 2 premières vidéos sont gratuites, jusqu’à 1 minute chacune, avec filigrane. Sans carte bancaire. Tout le produit, toutes les voix et tous les styles compris.