Une page de La Grand-Salle de la taverne

Hero academie techno-magique Python de la .Taverne de l'Invisible

L’enseignement de Python au lycée avec EduPython

Par Darko Stankovski, 22/02/2024

Cette année scolaire, Kid est rentré au lycée. Il a donc eu son PC portable prêté par la région et a commencé les cours Python. Il a également eu un devoir à la maison. J’ai pu voir comment est enseigné Python et ce qu’est la distribution EduPython, installée d’office sur le PC, qu’ils utilisent pour leurs cours.

C’est volontairement que j’ai attendu plusieurs séances avant de donner mon avis afin de prendre un peu de recul. J’ai longtemps repoussé cet article et arrivé au milieu de l’année scolaire, on a assez de recul.

Je vais commencer par parler outil avec EduPython qui n’est connu qu’au sein de l’Éducation Nationale (et pour cause). Dans l’article suivant, j’aborderai l’enseignement de Python.

L’importance des outils

Un code informatique, c’est du texte brut. En théorie, pour écrire du code, il n’y a pas besoin d’autre chose qu’un éditeur de texte brut.

Mais le code informatique utilise une syntaxe et une structure spécifique. Il est rapidement indispensable d'utiliser des outils capables au moins d'identifier les erreurs dans le code. Et dans le cas de l'apprentissage de la programmation, il est indispensable d'être assisté.

Les développeurs utilisent des outils appelés IDEs, des Environnement de Développement Intégrés. Ok, "IDE", c'est en anglais, "Integrated Development Environment". On dit rarement "EDI".

Un IDE ne se contente pas d'aider à l'écriture du code. Il intègre tout un ensemble d'outils nécessaires pour le développement. D'où le terme d'environnement intégré.

Mais un IDE est un outil complexe qui n'est pas forcément adapté au néophyte qui découvre le code. Dans le cas de Python, il existe des outils plus simples justement destinés à l'apprentissage.

Historiquement, la fondation Python propose IDLE avec tout installation de Python. IDLE est un éditeur de code Python minimaliste. C’est un bon outil pour débuter car il ne disperse pas dans une multitude de fonctionnalités. Après tout, IDLE est l’acronyme de Integrated Development and Learning Environment.

L'environnement IDLE pour Python
L'éditeur IDLE

À titre d'information, IDLE est l'éditeur utilisé dans tout le chapitre dédié à Python dans le livre Je programme avec un Raspberry Pi, destiné aux enfants à partir de… 10 ans. À mon sens, c'est une illustration que c'est un outil accessible.

Mais IDLE n'a jamais évolué. En 2014 est apparu le projet qui a conduit, à mon sens, à l'outil d'apprentissage le plus abouti dans le monde Python : Thonny. Thonny est devenu l'éditeur de code destiné aux débutants sur les Raspberry Pi. Et si le livre Je programme avec un Raspberry Pi ne le cite pas, c'est qu'il est paru au moment de sa création.

J'ai écrit un article dédié à Thonny si vous souhaitez plus d'informations. C'est l'outil que j'utilise pour l'initiation à la programmation.

Les outils proposés par l’Éducation Nationale

Je ne sais pas (je n’ai pas non plus trop cherché) si il y a des directives de l’Education Nationale en ce qui concerne les outils à utiliser. Je me suis donc basé sur les références des manuels.

Il n’y a pas de manuel dédié à Python, l'enseignement du langage fait parti du livre de Maths (éditions didier en ce qui nous concerne). Celui-ci cite des outils pour écrire du code Python : Spyder (via Anaconda), EduPython et des outils en ligne.

Aucune citation d’IDLE ou de Thonny. On sent déjà le tunnel. Ok, alors voyons EduPython

Remise en contexte : d’AmiensPython à EduPython

Commençons par remettre dans le contexte la création d’EduPython… Ou plutôt, AmiensPython car c’est (comme souvent dans le public) le résultat d’une initiative locale. Ce projet part d’une bonne intention : proposer un package simple d’installation et d’utilisation de Python à une époque où Python, c’est un peu le chaos.

J’ai retrouvé un historique qui remontait à septembre 2009. Nous sommes alors sur Python 2.6/2.7. Python 3 vient de sortir mais ce n’est pas du tout sec. Les environnements de développement sont limités tout comme les outils de gestion de dépendance (PIP date de 2008).

Ceci conduit au projet AmiensPython qui deviendra EduPython et qui fait en réalité plusieurs choses.

L'interface EduPython
Capture provenant de edupython.tuxfamily.org

En premier lieu, c’est un package fournissant tout un ensemble d’outils Python afin qu’un lycéen puisse faire du Python : l’interpréteur, un éditeur de code intégrant un shell interactif (PyScripter), SQLite browser… L’objectif est bien d’avoir un package d’applications installé simplement. C’est cohérent vu que le lycéen est un néophyte complet et que l’enseignant ne pourra pas assurer un support technique.

En second lieu, le package vient avec les dépendances nécessaires à l’enseignement de Python dans un cadre scolaire (on y trouve par exemple Matplotlib pour dessiner des graphes). En soi, pas besoin de récupérer des packages et pour les utilisateurs d’EduPython, l’ensemble est standardisé. Là aussi, c’est cohérent pour des apprenants néophytes et ça évite les problèmes de disponibilité d’un réseau.

Enfin, l’équipe a également développé un module nommé `lycee` qui contient un ensemble de fonctions prêtes à l’emploi. Je m’y suis intéressé mais Kid ne l’ayant pas utilisé, je vais le laisser de coté. En soi, ce module est indépendant de l'environnement et est disponible sur les dépôts Pypl.

Avis sur EduPython

Je n’ai pas testé EduPython moi même sur une de mes machine car EduPython ne tourne que sur Windows. Et évidemment, je n’ai que du Mac et du Linux. J’ai donc regardé ce que le Kid avait sur son PC du lycée.

L’ensemble EduPython fait 450 Mo. On peut reprocher que c’est « lourd ». À titre d’information, la distribution standard Python qui contient l’interpréteur, la bibliothèque standard et les outils associés dont IDLE fait entre 90 et 200 Mo. Jupyter, Pandas et Matplotlib ne feront pas plus de 150 Mo. On a donc facilement 150 Mo de trop. Sans compter que tous les niveaux scolaires n’utiliseront pas toutes les dépendances (Kid n’utilisera rien, il aurai pu se contenter d’une installation du package standard).

Néanmoins, l’environnement fait le job avec des aides pratiques. Par exemple, le shell interactif propose de l’aide et permet l’édition multi-ligne ce qui est bien… bien que depuis, nous avons IPython (2001). L’éditeur de code pour sa part assiste évidemment plus qu’IDLE mais est moins efficace que VS Code.

Je vais être plus critique avec le contenu packagé. Il semble qu’EduPython s’articule autour d’Anaconda. C’est compréhensible dans le sens où la bibliothèque lycee utilise Numpy et Matplotlib. Mais Anaconda est totalement obsolète depuis que la gestion de dépendances est passée sur les Wheels et je suis très critique vu les problèmes qu’il peut poser. Il fait parti des raisons pour lesquelles le package est si lourd. Un poids inutile en 2de vu l’usage qui en est fait.

Je comprends le choix qui a été fait pour EduPython. Remis dans le contexte, il y a 15 ans, c’était un choix très pertinent. Aujourd’hui son seul intérêt est de fournir un pack qui permet une installation uniforme et standardisée. Cela réponds au contexte d’utilisation où l’enseignant a peu de compétence à résoudre un problème d’installation et destiné à un publique complètement néophyte. Le package, bien que volumineux, assure d’avoir toutes les dépendances même dans les établissements où l’élève n’a pas accès à un réseau.

Mais un autre défaut est que EduPython est un bloc monolithique dont on a du mal à identifier et comprendre les composants. De par sa nature, les élèves auront du mal à identifier ce qui fait parti de l’interface ou ce qui fait parti de la distribution standard.

Les outils sont également vieillissants. EduPython a une mise à jour très irrégulière et la dernière date… La version de Python intégrée est la 3.7.6, aujourd’hui obsolète car son support s’est arrêté le 27 juin 2023. Pour la rentrée (septembre) 2023, on aurai pu espérer avoir la 3.11 avec pour minimum la 3.10 qui clarifie les messages des exceptions). Mais pour celà, il faut repackager EduPython…

EduPython peut-être considéré comme un patch acceptable pour les enseignants peu formés ou dans des établissements techniquement limités (réseau). Sauf que les élèves de 2de n'utilisant rien de plus que la distribution standard, Thonny, qui est package avec un interpréteur à jour, aurai été plus adapté car plus léger.

On a essayé un truc avec le Kid…

J’ai fait faire un peu de Python à au grand. Il a installé VS Code et vu comment il fonctionne. Je lui ai par la suite demandé de regarder et essayer de suivre le chapitre sur Python dans le livre Je Programme avec un Raspberry Pi. Il l’a fait en appliquant ce qui est dans le livre, c’est à dire en utilisant IDLE.

Je lui ai demandé son avis et il m’a confirmé que finalement IDLE est plus simple. Il n’y a peut-être pas beaucoup d’assistance, mais il n’y a pas non plus de distractions. Plus tard, j'ai repris des concepts Python avec lui à l'aide de Thonny et là aussi, la simplicité lui a permis de se concentrer sur l'apprentissage de Python plutôt que la compréhension de l'outil.

Et au final…

C’est là que je ne peux m’empêcher d’être critique sur l’enseignement de la programmation au lycée. Les initiatives incitant à l’apprentissage de la programmation se sont multipliées depuis plusieurs années, je m’en suis fait régulièrement l’écho. Ces initiatives collaborent (c’est un peu la base du métier en plus), ont expérimenté, affiné les méthodes d’enseignement. Elles communiquent et partagent. Elles ont depuis suffisemment de recul. Je m’en suis même inspiré pour de la formation professionnelle. Et en même temps, j’ai l’impression que l’Éducation Nationale reste en vase clos, coupé du monde. Si ce n’est pas créé au sein de l’institution, si ce n’est pas proposé par l’institution, ça n’existe pas.

Et pourtant, ce n’est pas tout à fait exact. Dans le manuel de SNT (Editions Bordas, programme de 2019), j’y ai trouvé cette photo de Barak Obama à l’occasion de son intervention pour Hour of Code en 2014. Cette photo est associée au hashtag #yeswecode qui est plutôt une initiative française.

Des initiatives existent mais force est de constater une inégalité entre les établissements du fait, finalement, des enseignants. Et une impression que l'enseignement du code à l'école ne sert à rien car les élève ne sont pas en condition à apprendre.

Cela me conduit à la seconde partie : l'enseignement de Python au lycée.