Les auteurs :
Cet article peut être librement diffusé et son contenu réutilisé pour une utilisation non commerciale (contacter l’auteur pour une utilisation commerciale) suivant la licence CC-by-nc-sa http://creativecommons.org/licenses/by-nc-sa/3.0/fr/legalcode
Le point de départ du travail présenté ici est une conférence de Jill-Jênn Vie sur La géométrie dans les jeux vidéos. Ce doctorant, ancien président du concours Prologin, apporte un point de vue original et quelques idées simples mais qui ne semblent bizarrement pas toujours évidentes dans le milieu des professeurs de mathématiques. Comme par exemple, qu’il est bien plus motivant de coder des éléments graphiques et des mouvements, plutôt que des calculs ou des programmes abstraits... Et surtout : qu’on peut lier à maintes occasions l’étude de la géométrie avec la programmation des jeux vidéos.
Nous avons essayé de mettre en œuvre certaines de ces idées.
Notre parti-pris essentiel consiste à ne pas considérer l’algorithmique comme une simple illustration de quelques points du cours de mathématiques, mais comme une science qui met en application plusieurs notions du programme de mathématique de seconde. L’algorithmique est un élément de motivation pour les élèves, d’abord par sa forme : elle permet de faire bouger des objets comme dans un jeu vidéo ; mais elle est également motivante sur le fond, parce qu’elle participe à donner une raison d’être aux notions mathématiques enseignées en classe de seconde.
Enfin, ce fil rouge « jeux vidéos », que nous proposons sur l’ensemble de l’année scolaire, redonne une cohérence à toute une partie du programme de seconde. « Comment un ordinateur (qui, à priori, ne sait faire que des calculs) peut-il faire pour proposer un jeu vidéo à l’écran ? » Cette question est génératrice de toute une série de sous-questions auxquelles une grande partie du programme de seconde en mathématiques apportera des réponses.
Nous avons fait travailler nos élèves à plusieurs reprises au cours de l’année sur cette question. Il leur a été demandé d’afficher à l’écran des objets simples comme un disque rouge ou un rectangle vert, de les faire se déplacer, de faire déclencher certains événements comme des explosions à des moments bien précis, de faire rebondir les objets sur les parois de la zone graphique ou encore de leur faire suivre des trajectoires paraboliques. A chaque fois, le travail permettait d’apporter une amélioration dans la programmation des mouvements et utilisait les notions mathématiques qui étaient en cours de travail. Le parcours d’étude et de recherche s’est donc étalé sur une longue période, suivant l’avancement de la progression choisie.
Nous avons également travaillé l’algorithmique suivant d’autres modalités avec nos classes, par exemple en faisant programmer à nos élèves quelques algorithmes sur calculatrice.
Nous avons travaillé à trois enseignants de mathématiques sur ce projet, avec trois classes de seconde [1], mais de façons diverses : chacun de nous a fait ses propres expérimentations en fonction de ses habitudes de travail et des réactions de ses élèves.
Tout ce qui est présenté dans cet article est visible en ligne [2]. Pour les collègues intéressés, nous contacter pour obtenir les fichiers sources.
retour en début de partie
retour en début d’article
Ci-dessous, deux exemples d’activités sont proposés. Les fiches ont été utilisées telles qu’elles avec des élèves cette année.
Dans le premier exemple (voir ci-après la fiche-élève suivie de la fiche-professeur), les élèves avaient déjà travaillé à une ou deux reprises sur la modification de lignes de code permettant l’affichage d’objets qui se déplacent dans une zone graphique. Les élèves comprenaient donc très bien de quoi il s’agit et ont été un peu déçus en s’apercevant que l’activité ne porte pas réellement sur de la programmation mais plutôt sur un travail mathématique préalable au codage proprement dit.
Comme l’activité est difficile, elle a été proposée en demi-groupe (15 élèves) et de façon « frontale », avec vidéo-projecteur. Un groupe a mis beaucoup plus de temps que l’autre à s’approprier le problème. L’énoncé a été revu entre les deux séances. Pour un des deux groupes, il a fallu faire une activité préalable de type « figure téléphonée » : un élève dessinait deux rectangles sur son cahier et un autre, au tableau, ne les voyaient pas. Le premier ne donnait que les coordonnées des sommets au second, qui devait décider si les deux rectangles s’intersectaient ou non. Après quelques essais qui consistaient à refaire la figure à partir des données des coordonnées des sommets, le groupe d’élèves a pu commencer à réfléchir à la question posée dans l’activité.
Les exercices 1 et 2 proposés dans la fiche-professeur n’ont pas été travaillés.
La seconde activité proposée ci-dessous a été utilisée lors d’une reprise du parcours d’étude et de recherche, au cours d’un chapitre sur les vecteurs.
Les élèves étaient en salle informatique, seuls ou à deux devant un ordinateur, par groupe de 15 élèves.
La problématique du parcours était bien connue des élèves et en introduction, l’enseignant montrait une animation représentant une balle rouge qui se déplace dans une zone graphique en rebondissant sur les parois : le but de l’activité était de coder cette animation en « blockly ». C’était la première fois que le langage utilisé était blockly (le début du parcours avait été fait en javascript).
Un des groupes connaissait déjà blockly pour l’avoir utilisé en sciences de l’ingénieur. Dans les deux groupes, la prise en main de l’interface n’a pas posé de problème. Par contre, certains élèves étaient beaucoup plus lents que d’autres, c’est pourquoi le fichier « balle1.xml » a été proposé à la question 5 lors de la séance avec le deuxième groupe : cela donne aux élèves les plus lents la possibilité de disposer d’un fichier fonctionnel pour réfléchir aux dernières questions.
[1] classées « ZEP » jusqu’à présent, tant que cette classification n’a pas encore disparu pour les lycées !...
[2] NDLR : des liens sont introduits au fil de l’article.
[3] lui-même l’ayant emprunté à un premier auteur américain : Bill Mill
[4] voir la copie d’écran suivante, ou alors ici : http://byachepaul.web4me.fr/GeometrieJeuxVideo/2nde/build/index.html
[5] Comme par exemple : « Si la couleur rouge touche la couleur verte, faire... » ou : « Faire rebondir l’objet si le bord est atteint », ou encore : « déplacer l’objet d’un point A à un point B en 2 secondes »… toutes ces instructions sont trop simples à utiliser ! Si on programme sans disposer de ces instructions, en revanche, on aura besoin de calculer des distances en utilisant les coordonnées, de calculer des équations de droites, d’utiliser les coordonnées des vecteurs, etc.
[6] Une première version de cet environnement est visible ici : http://beaubiat.fr/Algo-avec-blockly/blockly/blockly_et_graphique/Conteneur_de_developpement.html
[7] La version 0.3 est par exemple visible ici : http://byachepaul.web4me.fr/blockly/blockly/0.3/
[8] Au format « xml ».
[9] On reprend ici une stratégie d’enseignement qui a notamment été théorisée par la théorie anthropologique du didactique, avec les notions d’AER et de PER. Voir par exemple : http://yves.chevallard.free.fr/spip/spip/IMG/pdf/TAD_-_Pistes_Jalons_-_Didirem.pdf
[10] Plusieurs exercices de ce type sont visibles ici : http://beaubiat.fr/Algo-avec-blockly/blockly/blockly_et_graphique/Exercices_B.html
[11] On peut travailler dans la même veine avec d’autres classes, par exemple en Tale Arts Appliqués : http://byachepaul.web4me.fr/GeometrieJeuxVideo/Tale/build/ . La question initiale « comment un ordinateur fait-il pour tracer des courbes à l’écran » est très riche pour le programme de ce niveau, où figurent les notions de courbes de fonctions du 2e ou 3e degré, de tangentes, d’équations cartésienne et paramétriques de cercles et d’ellipses, etc.
[12] Par exemple, si on code l’affichage d’un disque rouge de rayon très grand, on obtient un rectangle… puisque toute la zone graphique est colorée en rouge… Autre exemple : si une boucle itérative code l’affichage d’un disque rouge pendant 10 secondes et qu’on clique plusieurs fois sur le bouton « Exécuter », on obtient plusieurs disques rouges, puisque l’ordinateur lance plusieurs processus dont les temps d’exécution se chevauchent !
[13] « from scratch »...
[14] récemment, un article très intéressant est paru dans Mathematice, qui détaille notamment la façon de programmer de nouveaux blocs dans Blockly : http://revue.sesamath.net/spip.php?article815
[15] Bien sûr, passer dans un des formidables environnements que constituent « Scratch » ou « Snap » peut être tentant, mais ce type d’environnement est « trop riche » car comme nous l’avons expliqué auparavant, il ne permet pas le travail de certains types de tâches mathématiques que nous avons identifiés.