Charles Poulmaire & Pascal Remy
Ministère de l’éducation nationale, France
Numéro thématique 4 / 2024
Vers l’éditorial du numéro thématique 04
RÉSUMÉ • L’introduction de l’Informatique dans les programmes de l’Enseignement Secondaire en France date de 2012 avec l’apparition de l’option ISN en Terminale. A l’issue de la réforme du lycée général en 2019, celle-ci est devenue une discipline à part entière dont l’enseignement s’étale sur les deux années du cycle terminal (classes de Première et Terminale). L’un des points clés de cet enseignement est la récursivité, introduite en classe de Terminale, après seulement un an de formation initiale. Ce point est souvent difficile à aborder avec les élèves, en raison de l’abstraction sous-jacente à cette notion qui peut entraîner de nombreuses difficultés de compréhension. Dans cet atelier, nous proposons, sous la forme de notebooks Jupyter, deux ressources permettant une meilleure appréhension par les élèves des notions de base de la récursivité (appels récursifs, cas de base et piles d’exécution) en nous appuyant sur une stratégie liée à la manipulation de trois outils de visualisation graphiques : Python Tutor, Code Puzzle et Recursion Visualizer.
MOTS-CLÉS • enseignement de l’informatique - fonction - récursivité - appels récursifs - cas de base - piles d’exécution - arbre d’exécution - visualisation graphique
Figure 1 : Python Tutor et RecursionVisualizer
Cet atelier a pour but de présenter aux collègues des ressources permettant d’introduire la notion de récursivité en classe de Terminale NSI [1]. Nous axons en particulier notre présentation sur l’utilisation d’outils numériques libres de visualisation graphique favorisant une bonne compréhension des concepts de la récursivité :
Motivation L’enseignement classique papier-crayon de la récursivité conduisait à ce que la plupart des élèves n’arrivait pas à en appréhender convenablement l’ensemble des concepts fondamentaux. Pour dépasser les limites de cet enseignement, il semble naturel de se tourner vers des outils numériques utilisés à bon escient et de manière réfléchie.
Prérequis Travail préalable sur la notion de fonctions et une première utilisation des outils numériques de visualisation graphique.
Les outils utilisés
Capytale : cette plateforme [3] fournit, dans un cadre institutionnel, un environnement de travail standardisé conçu pour l’enseignement scolaire. C’est un service accessible sans installation avec un simple navigateur web qui possède une bibliothèque d’activités pédagogiques partagées entre enseignants. Parmi toutes les activités proposées par cette plateforme, nous avons choisi d’utiliser des notebooks jupyter qui permettent de combiner, dans un même fichier, du code, des commentaires, des fichiers multimédias et des visualisations sous forme de documents interactifs.
RecursionVisualizer : cet outil en ligne permet de visualiser pas à pas l’arbre des appels effectués lors de l’exécution d’un code Python.
Python Tutor : cet outil en ligne permet de visualiser l’exécution pas à pas d’un code Python et affiche les différents contextes d’exécution.
CodePuzzle : cet outil permet de créer des problèmes de Parsons qui sont une forme d’évaluation objective dans laquelle les répondants sont invités à choisir parmi une sélection de fragments de code, dont certains sous-ensembles constituent la solution du problème.
Choix et description des exercices
Notebook 1 : ce notebook permet d’aborder, à l’aide d’exercices progressifs s’inscrivant dans le temps, les concepts fondamentaux de la récursivité.
Ceci permet au professeur·e de mettre en place une stratégie d’individualisation.
Les différents exercices proposés ici, étant de nature plus complexes que ceux du notebook précédent, il est préférable de les inscrire dans la durée. Ceci aura aussi l’avantage de permettre une meilleure mémorisation des notions en y revenant régulièrement.
Ces deux ressources ont été expérimentées dans trois classes de Terminale NSI. A l’issue de cette expérimentation, nous avons pu en tirer les conclusions suivantes sur les plus-values pédagogiques (qu’elles soient du point de vue des enseignants ou des élèves), ainsi que sur les freins et les leviers inhérents à ce type d’activités :
Les plus-values pédagogiques
Les freins
Les leviers
J. Arsac, Itération et récursivité, Troisième Rencontre Francophone de Didactique de l’Informatique, Sion, Suisse, 1992
A. Busser, F. Jean-Albert et S.Hoarau, Récursivité et difficultés, IREMI de La Réunion, https://iremi.univ-reunion.fr/spip.php?article1090
A.Esbelin et M.More Fonctions et récursivité STS SIO, IREM Clermont-Ferrand, http://www.irem.univ-bpclermont.fr/IMG/pdf/2FonctionsRecursivite-2.pdf
P. Lac et M.More, Récursivité, IREM Clermont-Ferrand, http://www.irem.univ-bpclermont.fr/IMG/pdf/recursivite.pdf
N. Leon et S. Modeste, Récurrence et récusivité à l’interface des mathématiques et de l’informatique, IREM, 119, 2020
Balabonski T., Conchon S., Filliâtre J-C., & Nguyen K. (2020) Spécialité Numérique et sciences informatiques : 24 leçons avec exercices corrigés - Terminale - Nouveaux programmes. Ellipses.
Cormen T. H., Leiserson, C., Rivest, R., Stein, C. (2010) Algorithmique, 3ème édition, Sciences Sup, Dunod.
Dowek, G. (2011). Introduction à la science informatique, RPA, Scérén, CNDP-CRDP
[1] https://eduscol.education.fr/2068/programmes-et-ressources-en-numerique-et-sciences-informatiques-voie-g
[2] Référence au Socle commun de Septembre 2016
[3] Une alternative possible à cette plateforme est le site basthon.fr, ou des environnements de développement comme EduPyter ou EduPython, par exemple, qui fournissent des serveurs Jupyter intégrés.