# GENÈSE DIDACTIQUE D'UN JEU SÉRIEUX : LE SITE PYRATES

Cyrille Guieu

► To cite this version:

Cyrille Guieu. GENÈSE DIDACTIQUE D'UN JEU SÉRIEUX : LE SITE PYRATES. MathématICE, 2024. hal-04914204

HAL Id: hal-04914204

https://hal.science/hal-04914204v1

Submitted on 27 Jan 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
## GENÈSE DIDACTIQUE D'UN JEU SÉRIEUX : LE SITE PYRATES

Cet article apporte une contribution importante à celles et ceux qui s'interrogent sur l'enseignement de l'algorithmique et de la programmation (notamment en classe de Seconde) dans le cadre du cours de mathématiques. Il présente aussi le travail de thèse de Matthieu Branthôme [1].

Article mis en ligne le 25 février 2024

par **Cyrille Guieu**

Ce article a pour but de présenter le travail de thèse de Matthieu Branthôme, publié récemment [1]. Même si ce travail semble ne pas concerner directement l'enseignement des Mathématiques, il apporte une contribution importante pour celles et ceux qui s'interrogent sur l'enseignement de l'algorithmique et de la programmation (notamment en classe de Seconde) dans le cadre du cours de mathématiques. En effet il faut bien admettre que les aides disponibles pour les enseignants en vue de mettre en œuvre cet enseignement, sont rarement fondées scientifiquement et que les propositions des documents ressources proposés depuis 2017 demandent une didactisation importante afin d'être mis en place dans les classes. Bien que ce travail soit très axé « informatique » [2], il présente l'avantage de s'appuyer sur une analyse didactique précise de la programmation informatique au début du lycée et propose une mise en œuvre concrète à travers un jeu sérieux très abouti et présenté avec de nombreux retours d'expériences.

### Qu'est-ce que la programmation informatique ?

Une entrée didactique pour un problème d'enseignement exige de caractériser les savoirs visés ; il s'agit de donner un sens à ce que le terme de « programmation » désigne dans les programmes.

Pour répondre à cette question il faut se plonger dans un domaine plus vaste qui est celui de l'informatique qui est à la fois une science (descriptive, explicative) et une technique (productrice d'objets). Cette dimension technique est assez étrangère aux mathématiques et peut expliquer certaines incompréhensions entre les acteurs des deux disciplines. Elle est cependant essentielle pour distinguer la notion d'algorithme (modélisable mathématiquement) de celle de programme (qui ne l'est pas) :

**Algorithme**

Procédure de résolution de problème, s'appliquant à une famille d'instances du problème et produisant, en un nombre fini d'étapes constructives, effectives, non-ambigües et organisées, la réponse au problème pour toute instance de cette famille. Modeste, 2012 [3]

**Langage de programmation**

Un langage de programmation est un média qui permet de décrire des algorithmes calculables par des machines et compréhensibles par des humains par le biais de programmes constitués d'instructions suivant une certaine syntaxe et ayant une certaine sémantique définies de façon formelle. Branthôme, 2023

La notion de média permet d'englober les langages Scratch et Python dans la même définition, tandis que la notion de sémantique désigne le sens des instructions. Ces instructions permettent de manipuler les concepts fondamentaux suivants : variable, types primitifs (nombres, caractères et booléens), structure conditionnelle, structures de boucle (for et while), entrées-sorties des programmes, fonctions et paramètres, récursivité, types composites simples (chaînes de caractères, tableaux et enregistrements) et types composites complexes (listes) [4].

Une distinction importante est aussi faite entre un paradigme de programmation orienté-objet et procédural. Dans le paradigme orienté-objet, les instructions sont liées à un objet et plusieurs scripts (morceaux de programmes) peuvent s'exécuter en parallèle tandis que dans le paradigme procédural les instructions s'exécutent les unes après les autres dans un seul et même « fil » d'exécution.

### Comment ces notions sont-elles transposées au collège et au lycée ?

Les notions exposées dans la partie précédente ne sont pas enseignables telles quelles et les programmes d'enseignement en proposent une « transposition didactique » [5] élaborée pour être accessibles aux élèves dans le cadre d'une initiation à la programmation informatique.

La distinction algorithme/programme n'est par exemple pas transposée au cycle 4 où l'accent est mis sur la résolution de problèmes à l'aide de Scratch, alors qu'elle devient centrale en Seconde puisque les programmes demandent de traduire des algorithmes exprimés en langage naturel dans le langage Python. Une spécification des découvertes de Branthôme aux enseignements des programmes de mathématiques permet de mettre en lumière les transpositions suivantes :
<table><thead><tr><th>Concepts fondamentaux</th><th>Cycle 4</th><th>Seconde</th><th>Première</th></tr></thead><tbody><tr><td>Variables</td><td>■</td><td>■</td><td>■</td></tr><tr><td>Types primitifs : nombres, caractères et booléens</td><td></td><td>■</td><td>■</td></tr><tr><td>Structure conditionnelle</td><td>■</td><td>■</td><td>■</td></tr><tr><td>Structures de boucle : for et while</td><td>■</td><td>■</td><td>■</td></tr><tr><td>Entrées-sorties des programmes</td><td></td><td></td><td></td></tr><tr><td>Fonction et paramètres</td><td>(par effet de bord)</td><td>■</td><td>■</td></tr><tr><td>Récursivité</td><td></td><td></td><td></td></tr><tr><td>Types composites simples</td><td></td><td></td><td></td></tr><tr><td>Types composites complexes : listes</td><td></td><td></td><td>■</td></tr><tr><td>Paradigme de programmation</td><td>Orienté objet</td><td>Procédural</td><td>Procédural</td></tr></tbody></table>

Les blocs personnalisés (bouton « Mes blocs ») de Scratch ne sont pas vraiment des fonctions au sens académique du terme car ils ne renvoient pas de valeur. En revanche, ces blocs lorsqu'ils sont exécutés, peuvent agir sur des objets existants : on dit qu'ils agissent par « effet de bord ».

On notera que les notions de récursivité et d'entrées-sorties ne sont pas transposées ce qui pose des problèmes pour l'implémentation de certains algorithmes mentionnés dans les programmes de mathématiques du lycée [6].

## Comment anticiper les difficultés pratiques des élèves en programmation à la transition collège/lycée ?

Passer d'un langage ludique, conçu spécialement pour des enfants, à un langage conçu pour des professionnels de l'informatique comme le langage Python, est forcément source de difficultés. Branthôme en identifie les principales en se fondant sur la littérature scientifique à propos de l'enseignement des bases des langages de programmation :

- La disponibilité d'aides

- La difficulté à recopier des fragments de code

- La gestion des messages d'erreur [7]

Ces trois éléments sont largement pris en compte dans Scratch puisque les aides sont intégrées au logiciel, qu'il n'y a pas de code à écrire et qu'il n'y pas d'erreur de syntaxe possible. A l'inverse la programmation en langage Python induit des difficultés sur ces trois thèmes, quel que soit le support matériel et logiciels utilisés pour programmer.

Grâce à un sondage impliquant des centaines de professeurs de mathématiques enseignant en Seconde, Matthieu Branthôme met en évidence deux usages majoritaires relatifs au langage Python au lycée : les professeurs utilisent largement la calculatrice lorsqu'ils sont en classe standard et l'environnement de programmation EduPython lorsqu'ils sont en salle informatique. Dans ces deux environnements, les aides sont difficilement accessibles, il peut être fastidieux de copier du code et les messages d'erreurs ont été conçus à destination d'informationciens et sont en langue anglaise. C'est pour ces raisons qu'une ingénierie didactique a été conçue sous la forme d'un jeu sérieux.

## Principaux choix de conception du site PyRates

PyRates (https://py-rates.org/) a été conçu à partir de l'analyse didactique que nous avons ébauchée dans les parties précédentes. Il a été pensé pour permettre à des élèves de Seconde de découvrir les notions de base de la programmation en langage Python (boucles, variables, conditionnelles, fonctions) en 2 séances d'environ une heure en autonomie. Il se présente sous la forme d'un jeu de plates-formes (à la manière de Mario Bross (https://supermario-game.com/fr/)) dans lequel le (ou la) pirate doit aller chercher une clé pour ouvrir un trésor en surmontant quelques obstacles. Les déplacements sont codés en Python avec quelques fonctions supplémentaires permettant d'agir sur le personnage exprimées en français. L'ergonomie de la fenêtre et la logique de jeu (le game play) ont été conçus en référence à celle Scratch : action sur un objet, présence de menu de commandes sur la gauche, possibilité de copier des fragments de code (au lieu de déplacer des blocs), aide intégrée.

Correspondances entre les éléments de Scratch et de PyRates
<figure><img src="image_2.png" /></figure>

Les erreurs éventuelles rapportées par l'interprèteur Python sont exprimées en français :

*Exemple de message d'erreur généré par l'interprèteur Python de Pyrates :*

<figure><img src="image_3.png" /></figure>

## Intérêt et limite du site PyRates

Dans le cadre de sa thèse, Branthôme a expérimenté le jeu dans 9 classes de Seconde pendant deux séances distantes d'environ deux semaines. Les 240 élèves concernés n'avaient pas encore travaillé sur Python pendant l'année en cours.
Les retours d'expérience qualitatifs et quantitatifs sur le jeu sont bons en ce qui concerne l'engagement des élèves. Les aides sont jugées pertinentes et sont utilisées par les élèves. Les concepts de programmation visés sont également mobilisés par la plupart des élèves qui réussissent.

Voici par exemple le premier niveau et sa correction [8] :

<figure><img src="image_4.png" /></figure>

Les deux premiers niveaux permettent à l'élève de découvrir le fonctionnement du jeu et d'introduire la boucle (sans variable de comptage, grâce au symbole « underscore »). A partir du niveau 3 des variables sont introduites sous la forme de message à lire dans des bouteilles et à réutiliser pour réaliser des actions pertinentes. L'utilisation des variables est rendue nécessaire par des éléments aléatoires dans la conception des niveaux.

*Le niveau 3 et sa correction : la hauteur des piles de caisses est aléatoire et change avant chaque exécution, les messages dans les bouteilles indiquent leur hauteur (1 à 5)*

<figure><img src="image_5.png" /></figure>

A partir du niveau 3, on relève quelques contournements didactiques consistant à faire un programme déterministe (sans utiliser les messages) et à rejouer le programme jusqu'à avoir de la chance (obtenir les bonnes hauteur de piles de caisses). Ce niveau est d'ailleurs celui sur lequel les élèves passent le plus de temps comme l'indique la figure ci-dessous :

<figure><img src="image_6.png" /><figcaption>Temps moyen et écart-type du temps passé par élève par niveau terminé</figcaption></figure>

Ces durées indiquent également que la réussite du jeu prendra plus de deux séances pour la plupart des élèves débutants en Python mais d'autres expérimentations ont montré que des élèves connaissant déjà le langage Python pouvaient terminer le jeu en un peu plus d'une heure.

Conclusion
Bien que cette forme d'activité ne corresponde pas explicitement aux recommandations concernant le cours de mathématiques de la classe de Seconde qui est plus tourné vers des programmes implémentant des algorithmes mathématiques, il répond à une préoccupation légitime sur le plan didactique de transition entre le collège et le lycée. Son format est bien pensé et il peut permettre de faire progresser rapidement les élèves vers une certaine autonomie dans l'apprentissage du langage Python en vue de réussir les objectifs plus formels du programme [9]. L'auteur envisage de proposer ses sources en accès libre, ce qui pourrait permettre de l'implémenter derrière un ENT et donc d'accéder aux traces d'activités des élèves [10], mais aussi de créer de nouveaux niveaux. Ce serait une opportunité de se rapprocher davantage des objectifs algorithmiques fixés par le programme de mathématiques de la classe de Seconde.

Notes

<footnote>[1] Matthieu Branthôme. Apprentissage de la programmation informatique : analyses et ressources pour accompagner la transition collège-lycée. Éducation. Université de Bretagne occidentale - Brest, 2023. Français. (NNT : 2023BRES0047), (https://www.theses.fr/2023BRES0047) . (tel-04397329), (https://theses.hal.science/tel-04397329)</footnote>

<footnote>[2] Il prend en compte l'ensemble des enseignements d'informatique à la transition collège/lycée : Technologie 3ème, SNT 2nde et Mathématiques sur les deux niveaux.</footnote>

<footnote>[3] Simon Modeste. Enseigner l'algorithme pour quoi ? Quelles nouvelles questions pour les mathématiques ? Quels apports pour l'apprentissage de la preuve ?. Histoire et perspectives sur les mathématiques [math.HO]. Université de Grenoble, 2012. Français. NNT : . tel-00783294</footnote>

<footnote>[4] Un type composite simple est une collection d'objets du même type tandis qu'un type composite est une collection d'objets qui peuvent être de différents types</footnote>

<footnote>[5] « Un contenu de savoir » ayant été désigné comme savoir à enseigner, subit [...] un ensemble de transformations adaptatives qui vont le rendre apte à prendre sa place parmi les objets d'enseignement. Le « travail » qui d'un objet de savoir à enseigner fait un objet d'enseignement est appelé la transposition didactique. » (Chevallard, 1985)</footnote>

<footnote>[6] Voir par exemple le « calcul des coefficients binomiaux » mentionnés au programme de terminale dont on trouvera deux versions dans cet article : une est récursive, l'autre utilise l'instruction « print ».</footnote>

<footnote>[7] Voir par exemple cet article à ce sujet</footnote>

<footnote>[8] Un guide pédagogique (https://py-rates.fr/guide/FR/index.html#pedagogical-guide) très complet présente de façons détaillée l'ensemble des niveaux avec une correc-
tion et une analyse didactique.</footnote>

<footnote>[9] Il y a évidemment bien d'autres approches possibles pour commencer Python au lycée. On peut penser à **Alien Python**, à l'application **Vittascience** (https://fr.vittascience.com/python/), ou encore à **SophusPyScratch**.</footnote>

<footnote>[10] Cette fonctionnalité existe déjà pour les besoins de la recherche mais n'est pas disponible sur le site public</footnote>