Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Deux interfaces Python avec des blocs pour le lycée : Vittascience et SofusPyScratch

Patrick Raffinat présente 2 environnements pédagogiques facilitant l’enseignement de Python au lycée via la programmation par blocs : l’interface développée par Vittascience et SofusPyScratch. Des exemples illustrent l’intérêt de cette approche.

Article mis en ligne le 21 juin 2022
dernière modification le 4 octobre 2022

par Patrick Raffinat

A) Introduction

Dans plusieurs articles, dont « SofusPyScratch, un logiciel pour passer de Scratch à Python en mathématiques », j’ai encouragé le recours (non systématique) à la programmation par blocs pour faciliter l’enseignement de Python au lycée. Pour être encore plus incitatif, j’ai poursuivi mon travail dans deux directions :

  • remplacement de l’ancien environnement d’exécution de Python intégré dans SofusPyScratch (Skulpt) par un nouveau (Basthon) plus complet en permettant notamment l’utilisation de nombreuses librairies (pyplot, sympy…).
  • réalisation d’une banque d’exercices pour le lycée

Avant d’aborder ces deux thèmes, je présenterai un autre environnement pédagogique facilitant l’enseignement de Python via la programmation par blocs : il s’agit de celui de Vittascience, start-up présentée dans l’article « Vittascience, un site pour rendre les mathématiques et les sciences plus vivantes ».

B) Vittascience et programmation Python

Introduction

Vittascience propose plusieurs interfaces de programmation (lien), dont une pour Python avec laquelle un lycéen peut être rapidement opérationnel, par exemple pour calculer le maximum de deux nombres :

On peut noter sur la copie d’écran que, outre les menus algorithmiques classiques (logique, boucles…) , il y a aussi un menu pour créer des graphiques et un autre pour faciliter l’utilisation de la librairie numpy.

Programmation « hybride »

Devoir créer l’intégralité d’un programme par blocs pour obtenir le code Python final peut se révéler fastidieux à mettre en œuvre : par exemple, pour une équation du second degré, il est pénible d’avoir à assembler « plein de blocs » (notamment pour le discriminant et les solutions). Dans un tel cas, je préconise de débuter par un « squelette de programme par blocs », puis d’en obtenir la traduction en Python avant de compléter le code ainsi obtenu.

Une autre interface de programmation proposée par Vittascience (« TI83/Python ») offre une fonctionnalité « hybride » qui, je l’espère, sera intégrée à l’interface Python standard. Elle consiste, en mode « console » (en principe destiné uniquement au codage Python), à choisir dans la barre de menus Blockly un bloc pour le déplacer dans l’éditeur Python afin d’y insérer la traduction.

Dans ce cas, il ne s’agit pas véritablement de programmation par blocs puisqu’on n’assemble pas de blocs, mais plutôt d’une aide syntaxique en mode codage.

Gestion d’une classe

En mode gratuit, Vittascience permet de gérer une classe (avec au plus 50 élèves). J’ai testé cette fonctionnalité pour les besoins de l’article, en créant :

  • un compte enseignant
  • une classe avec deux élèves
  • des activités que j’ai proposées à ces élèves (fictifs)

La classe compte en fait trois élèves, car Vittascience ajoute automatiquement l’élève « Vittademo », très pratique lors de la mise au point des activités : en effet, Vittademo permet de se mettre en mode apprenant sans avoir à se déconnecter du compte enseignant. On peut voir sur le tableau de bord ci-dessus que deux activités ont été proposées, si les élèves y ont répondu ou non, si l’enseignant a évalué les réponses fournies par chaque élève et l’éventuelle évaluation qu’il en a faite (allant de « très bonne maîtrise » à « maîtrise insuffisante »)…

Pour créer chaque activité, j’ai procédé ainsi :

  • création d’un projet, c’est à dire d’un programme à compléter ou à modifier
  • à partir de l’icône « roue dentée » de ce projet, j’ai fait apparaître automatiquement un éditeur prérempli que j’ai complété par l’énoncé de la tâche à accomplir (voir écran ci-dessous)
  • attribution de l’activité à la classe

Le contenu ci-dessus de l’éditeur correspond à la première activité, où un programme par blocs (à modifier) calculant le maximum de 2 nombres est fourni aux élèves :

La seconde activité montre qu’il est possible, pour un enseignant qui le souhaiterait, de proposer aux élèves des activités sans programmation par blocs. Pour cette activité, consacrée tout comme la première au calcul du minimum de deux nombres, un squelette de programme Python à compléter est fourni aux élèves :

Pour finir, j’incite les lecteurs qui voudraient en savoir plus sur la gestion des classes à regarder cette video réalisée par Vittascience.

C) Création d’une version de SofusPyScratch spécifique au lycée

Introduction

SofusPyScratch est un logiciel s’adressant à des collégiens ou à des lycéens :

  • au collège, son extension par blocs apporte quelques avantages dans un cadre mathématique par rapport à Scratch, notamment : calcul formel, un bloc « augmenter une variable » enrichi de variantes (diminuer/multiplier/diviser une variable) et un bloc graphique (courbe) ; en outre, son traducteur de blocs et son environnement d’exécution de code Python permet de donner en fin de 3ième un premier aperçu de ce qui sera enseigné au lycée
  • au lycée, on peut programmer en Python en s’appuyant facultativement sur la programmation par blocs : insertion de la traduction de bloc(s) dans le code Python en cours d’écriture (lorsque les élèves ont des difficultés syntaxiques), blocs d’entrée adaptés aux préconisations Python (saisie par une fonction dont les paramètres sont les entrées de l’algorithme)...

La polyvalence de SofusPyScratch est un atout qui n’est pas sans contre-partie :

  • le cadre mathématique de la programmation par blocs n’y est pas autant poussé que dans ScratchGGB ( voir « Banque d’exercices ScratchGGB pour le collège » ) : en effet, difficile d’envisager pédagogiquement l’incorporation d’un environnement GeoGebra dans un logiciel où il y déjà un environnement Python et un éditeur Scratch.
  • le changement d’environnement Python (Basthon au lieu de Skulpt) imposerait plusieurs secondes d’attente (chargement de Basthon) au démarrage de SofusPyScratch, y compris à des collégiens ne faisant que de la programmation par blocs.

Après avoir pesé le pour et le contre de ces différents arguments, j’ai décidé :

  • de conserver l’actuelle version « collège/lycée » de SofusPyScratch, suffisante dans de nombreuses situations pédagogiques.
  • de créer une version « lycée+ » qui, grâce à l’incorporation de Basthon, propose plus de fonctionnalités Python ; de plus, comme cette version ne s’adresse plus aux collégiens, on peut ajouter dans l’éditeur Scratch des menus spécifiques à certaines librairies Python sans que cela « n’embrouille » les collégiens.

Deux façons de gérer les entrées d’un algorithme

La transition entre collège et lycée est non seulement d’ordre syntaxique, mais aussi d’ordre conceptuel : en effet, les lycéens ne doivent plus faire des saisies comme au collège, mais introduire une fonction dont les paramètres sont les entrées de l’algorithme à coder en Python. C’est pourquoi, pour une meilleure continuité pédagogique entre collège et lycée, j’ai introduit un bloc « entrée » permettant de gérer ces deux approches :

Lorsqu’on passe de l’option « demander un nombre » à l’option « tester », le traducteur de SofusPyScratch crée automatiquement un sous-programme Python (nommé « algo ») sans qu’il y ait à définir une fonction en programmation par blocs.

Quels blocs pour quelles librairies Python ?

J’avoue que je n’ai pas les idées très claires sur les librairies Python à prendre en compte au niveau de la programmation par blocs. J’ai donc commencé par étudier l’offre de Vittascience, qui se compose d’un menu « Graphiques » et d’un menu « Numpy » :

De façon un peu subjective, j’ai décidé de ne conserver que les trois blocs graphiques (graphe, nuage et barres). J’aurais aussi volontiers gardé les blocs « tableau avec les éléments » et « matrices avec éléments », mais l’interface « Scratch » de SofusPyScratch ne peut rivaliser avec l’interface Blockly de Vittascience dans ce domaine : je les ai donc remplacés par un bloc permettant d’initialiser un tableau ou une matrice directement avec une syntaxe Python (c’est à dire entre crochets).

Création d’une banque d’exercices

Il y a actuellement sept activités, dont quatre couvrant les principaux thèmes algorithmiques : entrées-sorties, instructions conditionnelles, boucles et listes. L’écran ci-dessous montre que l’activité « listes » comporte 3 questions (notations de base, moyenne et variance, courbe) et que la première question a été sélectionnée :

Les deux autres activités portent sur les sujets suivants :

  • l’activité « dés » simule des lancers de dés, ce qui conduit à des calculs d’effectifs et à des diagrammes en barres.
  • l’activité « intérêts composés » cherche pour quel taux annuel on obtient une augmentation de 20 % en 4 ans ; cela conduit à résoudre une équation, graphiquement puis par dichotomie.
  • l’activité « arithmétique » porte sur des algorithmes de seconde tels que « plus grand multiple de a inférieur ou égal ou b », test de primalité...