Contexte : Dans divers travaux de recherche nous étudions quatre environnements d’apprentissage de la programmation (par exemple jeux sérieux, exerciseurs) au sein desquels l’apprenant produit plusieurs codes successifs pour résoudre un problème. Deux exemples parmi ces environnements : https://spy.lip6.fr/index_fr.html et https://www.algopython.fr/
Objectif du stage : proposer un système permettant, à partir d’une succession de codes soumis par des élèves dans ces environnements, d’identifier et caractériser les évolutions du code initial vers le code final. Exprimer ces modifications d’une manière lisible et pertinente pour, par exemple, un enseignant d’informatique.
Détail du sujet
L’approche à mettre en œuvre pour réaliser ce travail est l’exploitation et l’adaptation d’une librairie Python existante (https://pypi.org/project/asterrdetection/0.5/ ) qui, à partir de deux codes, les convertit en AST (Abstract Syntax Trees) et renvoie les modifications (au sens de l’algorithme de Zhang-Shasha) nécessaire pour passer d’un code à l’autre. Par exemple, pour passer du code 1 au code 2 ci-dessous, il faut deux modifications (changer le nombre d’itération de la boucle et indenter son corps).

Dans le cadre du projet il est attendu de :
Concevoir une application qui permette de mesurer les évolutions de code des élèves au moyen de cette librairie pour des environnements cibles.
- Proposer une couche d’interprétation des modifications pour les exprimer de manière signifiante en termes d’évolution du code plutôt que juste un nombre de modifications à effectuer (par exemple, ajout / suppression d’une structure de contrôle ; ajout / suppression d’une variable ; modification de la valeur d’une variable ;…)
- proposer un système de visualisation de l’évolution des codes
- prolongement possible : proposer un système permettant d’identifier des « trajectoires » de programmation similaires / classifier les « groupes de codes », afin de faire émerger des profils / stratégies d’évolution d’un code.
Éléments mis à disposition :
- Bases de codes produits par des élèves dans différents contextes, de complexité diverse
- Librairie ast-error-detection (https://pypi.org/project/asterrdetection/0.5/)
Compétences techniques attendues / à construire :
- Bonne maîtrise de Python
Connaissances en analyse de données (nettoyage, exploration, qualité, préparation)
Quelques bases en algorithmie sur les arbres (parcours, comparaison d’arbres)
Profils recherchés :
- être intéressé.es par les questions d’apprentissage de la programmation est un plus
- groupe de 2 à 4 selon la motivation à travailler ensemble et la complémentarité des compétences