Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°48 - janvier 2016 > Programmation visuelle avec Blockly et réforme (...)

Programmation visuelle avec Blockly et réforme du collège
Moteur de recherche
Mis en ligne le 31 décembre 2015, par Patrick Raffinat

Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la license CC-by-nc-nd : http://creativecommons.org/licenses/by-nc-nd/3.0/fr/legalcode

A) Introduction

Dans mon précédent article [1], j’ai fait part de ma stupéfaction devant le volet algorithmique du projet de réforme du collège, tellement il est ambitieux sur le papier et difficile à mettre en œuvre. Par défi intellectuel, je me suis creusé la cervelle pour proposer des activités réalistes sur la bataille navale, un jeu qu’il est … peu réaliste de faire programmer au collège !

Mes propositions montrent, je l’espère, que ce thème n’est pas aussi insurmontable qu’il en a l’air de prime abord. Je pourrais poursuivre dans cette voie en « dédiabolisant » de nombreux autres sujets déstabilisants pour des enseignants de mathématiques (et pas qu’eux !) de ce projet de réforme insuffisamment préparé. Mais comme je n’en ai nulle envie, je prendrai un peu de distance par rapport au projet en m’intéressant à la programmation visuelle sans chercher à la relier précisément aux thèmes mentionnés dans le projet.

Il est probable que la programmation visuelle sera utilisée au collège, car c’est actuellement la solution la plus adaptée pour aborder la programmation avec un jeune public. C’est pourquoi je présenterai en détail Blockly, un logiciel libre très prometteur : utilisable en mathématiques, pratique pour coder en Javascript ou en Python, paramétrable, extensible...

Les diverses extensions que j’ai réalisées pour cet article peuvent être testées sur mes pages professionnelles consacrées à Blockly [2].

B) Blockly et les mathématiques

Introduction

Robert Brichemer le cerf, un enseignant de mathématiques fictif, a analysé le projet de réforme du collège dans le N°46 de MathemaTICE [3]. Blockly fait partie des nombreuses pistes qu’il explore, mais sans l’approfondir suffisamment à mon sens. Je vais donc m’en charger tout au long de cet article...

L’exemple que Robert Brichemer présente est un corrigé du brevet 2015 de Polynésie.

On peut voir que la rubrique Math est assez fournie, ce qui conduit Robert Brichemer à ajouter un peu plus loin dans l’article que les fonctionnalités de Blockly « le prédestineraient plus (que Scratch) à une utilisation en mathématiques ».

Cela me semble effectivement être le cas, même si je n’ai pas suffisamment étudié Scratch pour l’affirmer. J’ai d’ailleurs d’autant moins de raisons de chercher à comparer les deux logiciels que mon but n’est pas de les classer par ordre de préférence, mais de militer pour l’utilisation de la programmation visuelle au collège (et à l’école primaire) : que chacun choisisse celui qui lui semble le meilleur, en fonction des activités qui seront proposées [4] !

Sophus

Quand on analyse l’exemple présenté par Robert Brichemer, on s’aperçoit qu’il utilise à deux reprises le bloc « incrémenter » :

  • incrémenter nombre de 1
  • incrémenter nombre de -9

Ces deux instructions remplacent avantageusement les affectations « nombre=nombre+1 » et « nombre=nombre-9 », comme cela a été évoqué dans un article du N°42 de MathemaTICE consacré au langage Sophus [5].

Les sources de Blockly étant modifiables, cela m’a conduit à introduire d’autres blocs inspirés par Sophus, un langage axé sur la transformation de variables numériques : multiplier, inverser, augmenter (diminuer) d’un pourcentage, élever au carré...

En voici une illustration :

C) Les jeux Blockly

Introduction

L’enseignement de la pensée algorithmique au collège (et à l’école primaire) doit clairement être plus attractif que celui mis en place au lycée en 2009. Cela explique que le projet de réforme mentionne la programmation d’applications ludiques (labyrinthe, nim, bataille navale...) : l’apprentissage par le jeu est en effet un procédé pédagogique qui a fait ses preuves dans de nombreux domaines.

Plusieurs jeux Blockly [6] peuvent être utilisés dans le domaine algorithmique. Robert Brichemer a vanté les qualités du jeu du labyrinthe , qu’il présente comme « redoutable d’efficacité et couvrant l’essentiel de ce qu’il est raisonnable d’aborder en 5ieme ». En voici une illustration, pour les lecteurs qui s’interrogeraient sur la nature des programmes visuels à réaliser :

Je crois que le jeu Movie, qui conduit à animer des formes géométriques, peut également intéresser les enseignants de mathématiques au collège. Pour les moins audacieux, il y a aussi la version Blockly de la tortue Logo qui permet de rester en terrain connu.

Bataille navale

N’ayant pas trouvé de jeu Blockly pour la bataille navale, j’ai décidé d’en créer un [7] . Je ne comptais pas en dire plus sur ce jeu dont j’ai présenté une version tableur / Visual Basic dans mon article précédent, mais comme Robert Brichemer m’a posé plusieurs questions, j’y réponds bien volontiers.

Question 1 : pourquoi faire une nouvelle version ?

L’intérêt de la version Blockly, par rapport à la version tableur, est de ne pas écrire de code Visual Basic. Et, plus généralement, l’intérêt de la programmation visuelle par rapport à la programmation textuelle est de faciliter le travail des élèves en s’affranchissant des erreurs de syntaxe et en proposant un environnement de développement plus simple.

Question 2 : quels sont mes attendus pédagogiques ?

Je n’ai aucun attendu vis à vis des élèves : je propose des activités réalistes, ce qui est déjà beaucoup sur un sujet rarement (jamais ?) abordé ! Mais je suggère à Robert Brichemer de demander à sa hiérarchie quels sont les attendus pédagogiques de la bataille navale, hiérarchie qui l’a désigné volontaire pour assurer une formation accélérée auprès de ses collègues...

Question 3 : le code source est-il disponible ?

Comme Robert Brichemer veut épater ses collègues et sa hiérarchie en développant de nouvelles activités relatives à la bataille navale, il m’a demandé de façon détournée s’il pouvait disposer du code source : « mettre le code source en téléchargement dans l’article serait sympa aussi et pourrait aider les plus geeks des lecteurs ».

Je lui ai répondu que ça serait peut-être trop sympa et que, de surcroît, il n’était pas simple d’adapter le code de cette extension de Blockly loin d’être triviale. Je vais néanmoins faire un geste, puisque je milite pour l’utilisation de la programmation visuelle au collège.

Zip - 15.6 ko
Code source de la bataille navale avec Blockly

En retour, j’espère que les collègues qui en bénéficieront, s’il y en a, penseront à faire un lien vers cet article lorsqu’ils diffuseront leurs nouvelles activités...

D) Blockly et le codage dans un langage de programmation

Introduction

Autant je suis favorable à l’enseignement du codage au collège avec un langage de programmation visuel (Blockly, Scratch...), autant je suis réservé quant à l’utilisation de langages textuels classiques (AlgoBox, Python...).

Par conséquent, cette partie de l’article ne doit surtout pas être interprétée comme étant une incitation à faire massivement du codage dans un de ces langages : non seulement cela me semble prématuré, mais il y a aussi le risque de voir proliférer une multitude de langages comme au lycée, au détriment d’une indispensable continuité pédagogique [8].

Si j’évoque ce sujet, c’est parce que tôt (au collège) ou tard (au lycée) la programmation visuelle ne suffira pas : je m’intéresserai donc ici aux moyens de faciliter cette nécessaire transition et non au moment [9] où elle doit se faire.

Javascript

Blockly proposant un traducteur en Javascript, la transition de Blockly vers ce langage de programmation est facile à réaliser. Les traductions obtenues sont le plus souvent exploitables pédagogiquement, mais le bloc « incrémenter » et le bloc « compter » (boucle Pour) posent problème comme on peut le constater :

Cela m’a donc conduit à modifier les sources de Blockly afin de rendre plus exploitable la traduction : mais est-ce réellement utile au collège de coder en Javascript et, si oui, jusqu’où peut-on aller ? Quoi qu’il en soit, je laisse cette possibilité aux enseignants de collège … tout en espérant qu’ils n’en n’abuseront pas au détriment de leurs élèves !

PluriAlgo

Si je parle encore une fois de mon logiciel PluriAlgo [10], c’est parce qu’il dispose d’un traducteur de programmes CarMetal, grâce auquel les programmes Blockly pourront être facilement traduits dans la dizaine de langages gérés par PluriAlgo.

J’ai donc ajouté un onglet « Blockly » dans la partie gauche de l’interface de PluriAlgo, où l’utilisateur peut créer et exécuter des programmes Blockly. Pour ensuite obtenir la traduction d’un programme Blockly dans un langage de programmation, la procédure à suivre est la même que pour traduire un programme écrit dans un des éditeurs textuels de PluriAlgo.

Cette nouvelle fonctionnalité est a priori destinée à des lycéens puisque, comme je l’ai dit en introduction, je suis réservé sur l’utilisation de langages textuels au collège.

E) Blockly et technologie

A partir de la rentrée 2016, la programmation sera présente au collège non seulement en mathématiques, mais aussi en technologie : par simple curiosité, n’étant pas du tout féru de technologie, j’ai effectué quelques recherches sur internet pour voir si des applications Blockly liées à l’enseignement de la technologie avaient été développées.

Ma première recherche m’a redirigé vers BlocklyDuino [11] , une extension de Blockly facilitant la programmation d’une carte électronique Arduino.

De fil en aiguille, j’ai aussi découvert l’existence de l’environnement Blockly4Thymio [12], une extension de Blockly pour le robot éducatif Thymio 2.

F) Conclusion

Contrairement à certaines idées reçues, la programmation visuelle n’est pas destinée qu’à des élèves du primaire. Elle reste pertinente au collège, y compris pour des activités mathématiques.

Contrairement à certaines idées reçues, il n’est pas moins sérieux « d’enseigner le codage » (slogan à la mode !) avec un langage visuel (Scratch [13], Blockly...) qu’avec un langage textuel (AlgoBox, Python...).

J’espère donc que les enseignants de collège privilégieront ce type de codage beaucoup plus attractif. Un panachage avec un langage textuel me paraît envisageable en troisième, mais peu pertinent avant, d’autant qu’il risquerait de conduire au manque de continuité pédagogique si préjudiciable à la réforme du lycée de 2009.

J’espère aussi que mes réalisations (bataille navale notamment) susciteront des vocations pour que d’autres activités ludiques et éducatives soient développées à partir de Blockly.

Ce n’est bien sûr pas à l’enseignant de base de le faire : que l’éducation nationale se donne enfin les moyens de ses ambitions ! Pour réconforter les enseignants de collège à juste titre sceptiques sur ce vœu pieux, j’ajouterai qu’il y a fort heureusement des raisons plus objectives de croire qu’ils disposeront à moyen terme de supports pédagogiques de qualité et adaptés à leurs besoins : je pense notamment au projet Class’Code, que Serge Abiteboul présente comme étant « d’une importance considérable pour la France » [14] .

Epilogue

Mes articles sont souvent rédigés plusieurs mois avant leur publication, ce qui me permet parfois de faire quelques ajustements si j’ai de nouvelles idées ou de nouvelles réalisations. Mais là, ce sont de consternants évènements extérieurs qui me conduisent à écrire cet épilogue : « Robert Brichemer a été vendu à une firme étrangère », comme me l’a annoncé par mail un membre du comité de rédaction de MathemaTICE ! Il faisait référence à une brève intitulée « Le Ministère de l’Education Nationale sous-traite la formation des enseignants à Microsoft-France... » [15].

Dans le N°47 de MathemaTICE, j’avais publié en épilogue deux sketches soulignant quelques tares d’un enseignement de l’algorithmique au lycée qu’il est indispensable de réformer. Mes deux personnages fictifs vont donc reprendre du service pour décrypter ce marché de dupes, parler de la formation des enseignants... En tant que militants actifs du service public, ils dévoileront même la proposition d’un projet qu’ils ont transmise par mon intermédiaire au conseil d’administration de Sésamath. Cette proposition fera l’objet d’un article (sérieux !) dans le prochain numéro de MathemaTICE...

PDF - 57.3 ko
Le Ministère de l’Education Nationale sous-traite la formation des enseignants à Microsoft-France...

notes

[1Voir http://revue.sesamath.net/spip.php?article775 (partie D consacrée à la bataille navale).

[3Algorithmes et codage au Collège - Alain Busser et Patrice Debrabant - http://revue.sesamath.net/spip.php?article761

[4S’il faut enseigner le codage dans un langage de programmation textuel, Blockly a l’avantage de proposer un traducteur en Javascript ou en Python. Mais Blockly ne sera d’aucun secours pour aborder certains thèmes du projet de réforme (gestion d’évènements, déclenchement d’instructions en parallèle...) alors que c’est facile à faire en Scratch.

[5« Pas de bol pour COBOL : Sophus, ça fuse ! » - Alain Busser et Florian Tobé - http://revue.sesamath.net/spip.php?article603

[8J’ai dénoncé les méfaits de cette prolifération de langages dans http://revue.sesamath.net/spip.php?article753 (voir partie D ).

[9En plus, quand le codage sera introduit à l’école primaire, cela aura forcément une incidence sur l’enseignement du codage au collège.

[13Par exemple, on lit que « le cours universitaire CS50 de Harvard utilise Scratch pour initier les étudiants à la programmation avant de passer à la programmation en C » dans le manuel de référence de l’utilisation de Scratch pour l’informatique créative (voir https://pixees.fr/?p=4648 )

Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197