L’enseignement de Python au lycée avec EduPython
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 mais arrivé au milieu de l’année scolaire, coté recul, on n’est pas mal.
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. Pas besoin de plus pour du code simple.
Lorsque le code devient plus complexe, il est nécessaire d’être assisté. C’est là qu’interviennent les IDE, les Environnement de Développement Intégrés. Un IDE va faire plus que de l’aide à l’écriture, il intègre divers outils et dans le cas de Python, entre la gestion des dépendances et les environnements virtuels (si on les utilise), ce n’est pas un mal.
Entre les deux, il existe d’autres éditeurs moins poussés mais qui vont apporter plus d’assistance qu’un simple éditeur de texte.
En, tant que développeur et formateur Python, voici les outils que je citerai.
En premier lieu, IDLE est un éditeur de code Python minimaliste qui a l’avantage d’être fourni avec la distribution standard. 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.
En ce qui me concerne, les suivants sont tout de suite les IDEs plus complets tel que VS Code ou PyCharm. À mon sens, PyCharm est le plus complet et le plus efficace mais en même temps, le plus lourd aussi bien en besoin de ressources qu’en fonctionnalités. C’est bien, mais lorsqu’on débute, on est perdu.
Entre les deux, il existe de nombreux autres éditeurs. Je citerai Spyder, utilisé par les Data Scientists car il est fourni avec Anaconda, distribution discutable qu’ils utilisent. Je citerai également Thonny, éditeur de code destiné aux débutants que l’on retrouve sur les Raspberry Pi.
Dans mes formations d’initiation à la programmation avec Python, je commence avec IDLE puis passe à PyCharm. J’évalue en ce moment la pertinence de passer par Thonny.
Les outils proposés par l’Education 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 manuels.
Pour situer, il n’y a pas de manuel dédié à Python, son enseignement fait parti du livre de Maths (éditions didier en ce qui nous concerne). Celui-ci cite des outils pour écrire du code Python, il s’agit de Spyder (via Anaconda), EduPython et des outils en ligne.
On peut comprendre qu’il n’y ai pas de références à des outils comme VS Code ou PyCharm. Leur complexité ne les rends pas accessible à un lycéen qui découvre la programmation.
Mais il n’y a pas de citation non plus d’IDLE, pourtant l’outil de base. Lorsque je prends en comparaison le livre Je programme avec un Raspberry Pi, destiné aux enfants à partir de… 10 ans, IDLE est l’éditeur qui est utilisé dans tout le chapitre dédié à Python. On sent déjà le décalage.
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.
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é.
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 moins de 50 Mo. VS Code fait moins de 100 Mo (je ne compare pas avec PyCharm qui est un mammouth). Jupyter, Pandas et Matplotlib ne feront pas plus de 150 Mo. On a donc facilement 200 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 soit passé 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 on voit également les défauts. 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 à comprendre ce qui est un outil indépendant 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…
Malgré mes critiques, EduPython est un patch acceptable pour les enseignants peu formés ou dans des établissements techniquement limités. Néanmoins, vu les besoins en classe de seconde, je pense qu’il serait plus judicieux d’installer Python de manière standard et d’utiliser simplement IDLE qui fait parti de la distribution standard. Les outils plus complexes, EduPython compris, peuvent venir par la suite.
On a essayé un truc avec le Kid…
J’ai fait faire un peu de Python à Kid 1. 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.
Et 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 les 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.
Cela va me conduire à la seconde partie, l’enseignement à proprement parler. Cette partie sera publiée la semaine prochaine.
À propos de... Darko Stankovski
iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.