When learning to program, students are usually assessed based on the code they wrote. However, the mere completion of a programming task does not guarantee actual comprehension of the underlying concepts. Asking learners questions about the code they wrote has therefore been proposed as a means to assess program comprehension. As creating targeted questions for individual student programs can be tedious and challenging, prior work has proposed to generate such questions automatically. In this paper we generalize this idea to the block-based programming language Scratch. We propose a set of 30 different questions for Scratch code covering an established program comprehension model, and extend the LitterBox static analysis tool to automatically generate corresponding questions for a given Scratch program. On a dataset of 600,913 projects we generated 54,118,694 questions automatically. Our initial experiments with 34 ninth graders demonstrate that this approach can indeed generate meaningful questions for Scratch programs, and we find that the ability of students to answer these questions on their programs relates to their overall performance.
- ID de l'article : 2510.11658
- Titre : Automatically Generating Questions About Scratch Programs
- Auteurs : Florian Obermüller, Gordon Fraser
- Classification : cs.SE (Génie Logiciel)
- Date de publication/Conférence : CompEd 2025 (ACM Global Computing Education Conference 2025)
- Lien de l'article : https://arxiv.org/abs/2510.11658
Dans l'apprentissage de la programmation, les étudiants sont généralement évalués en fonction du code qu'ils écrivent. Cependant, la simple réalisation de tâches de programmation ne garantit pas une véritable compréhension des concepts sous-jacents. Par conséquent, des recherches antérieures ont proposé d'évaluer la compréhension des programmes en posant des questions aux apprenants sur leur code. Puisque la création de questions ciblées pour chaque programme étudiant est à la fois fastidieuse et difficile, les travaux antérieurs ont proposé des méthodes pour générer automatiquement de telles questions. Cet article généralise cette idée aux langages de programmation par blocs, notamment Scratch. Nous proposons 30 types différents de questions sur le code Scratch, couvrant un modèle établi de compréhension des programmes, et nous avons étendu l'outil d'analyse statique LitterBox pour générer automatiquement les questions correspondantes pour un programme Scratch donné. Sur un ensemble de données contenant 600 913 projets, nous avons généré automatiquement 54 118 694 questions. Nos expériences préliminaires menées auprès de 34 élèves de neuvième année montrent que cette approche génère effectivement des questions significatives pour les programmes Scratch, et nous découvrons que la capacité des étudiants à répondre à ces questions est corrélée à leur performance globale.
La question centrale que cette recherche vise à résoudre est : comment évaluer efficacement le niveau de compréhension des étudiants concernant les programmes Scratch qu'ils ont écrits, plutôt que de simplement vérifier si le programme fonctionne correctement.
- Écart entre compréhension et implémentation : Les étudiants peuvent compléter des tâches de programmation par essai-erreur, copie ou assistance IA, sans réellement comprendre les concepts de programmation sous-jacents
- Limitations des méthodes d'évaluation : Les méthodes d'évaluation traditionnelles se concentrent principalement sur la correction du code plutôt que sur la capacité de compréhension des programmes des étudiants
- Défi de l'échelle : Dans les contextes d'enseignement à grande échelle, il est difficile pour les enseignants de créer manuellement des questions d'évaluation personnalisées pour chaque programme étudiant
- Limitations des langages textuels : Les méthodes existantes de génération de questions ciblent principalement les langages de programmation textuels comme Java, ne s'appliquant pas aux langages de programmation par blocs comme Scratch
- Différences dans les caractéristiques du langage : Dans Scratch, les variables sont créées via l'interface utilisateur plutôt que par des déclarations, et les blocs ne peuvent pas être référencés par numéro de ligne
- Manque de systématicité : Absence d'une approche systématique de conception de questions basée sur un cadre théorique
La motivation de cet article est d'étendre le concept existant de « Questions sur le Code de l'Apprenant » (Questions about Learner's Code, QLCs) à l'environnement Scratch, en fournissant un outil d'évaluation automatisé de la compréhension des programmes pour l'éducation en programmation par blocs.
- Conception systématique des questions : Conception systématique de 30 types de questions ciblant le code Scratch, basée sur le modèle Block Model de compréhension des programmes
- Extension d'outils : Extension de l'outil d'analyse statique open-source LitterBox pour générer automatiquement des questions de compréhension pour les programmes Scratch
- Validation à grande échelle : Validation de l'applicabilité de la méthode sur un ensemble de données contenant 600 913 projets Scratch publics
- Étude empirique : Vérification de l'efficacité des questions et de la corrélation entre la performance des étudiants aux questions et leur capacité de programmation par le biais d'expériences en classe avec 34 élèves de neuvième année
Entrée : Un projet de programme Scratch
Sortie : Un ensemble de questions de compréhension générées automatiquement sur ce programme, incluant le texte de la question, les options de réponse et la réponse correcte
Contraintes : Les questions doivent être basées sur les constructions de code réellement présentes dans le programme et conformes au cadre théorique du Block Model
Le Block Model comprend quatre niveaux de portée et trois dimensions de programme :
| Niveau | Dimension Textuelle | Dimension d'Exécution | Dimension d'Objectif |
|---|
| Atomique | Éléments du langage | Opérations d'éléments | Objectif des éléments |
| Bloc | Zones syntaxiques/sémantiques | Opérations de blocs de code | Fonctionnalité des blocs |
| Relationnel | Références entre blocs de code | Flux entre blocs de code | Relations objectif-sous-objectif |
| Macro | Structure globale du programme | Algorithme ou comportement du programme | Objectif ou finalité du programme |
Basée sur le Block Model, 30 types de questions ont été conçus, divisés en 5 formats de réponse :
- Type Numérique (🔢) : La réponse est un seul nombre
- Type Chaîne de Caractères (📝) : La réponse est une ou plusieurs chaînes de caractères
- Type Vrai/Faux (✓/✗) : La réponse est oui ou non
- Type Choix Multiple (☑️) : Sélectionner la réponse correcte parmi les options
- Type Texte Libre (📄) : Questions ouvertes nécessitant une réponse explicative
Réalisée par l'extension de l'outil LitterBox :
- Analyse AST : Conversion du programme Scratch en arbre de syntaxe abstraite
- Modèle Visiteur : Implémentation d'un générateur de questions pour chaque type de question
- Parcours du Code : Parcours de l'AST pour identifier les modèles de code pouvant générer des questions
- Génération d'Options : Génération automatique de distracteurs pour les questions à choix multiples
- Adaptation à la programmation par blocs : Première application systématique du concept QLCs aux langages de programmation par blocs
- Conception guidée par la théorie : Conception des types de questions basée sur un cadre théorique établi de compréhension des programmes
- Génération automatisée : Mise en œuvre d'un processus de génération de questions entièrement automatisé
- Couverture multidimensionnelle : Les questions couvrent tous les niveaux, des éléments de langage de base à l'objectif global du programme
- Ensemble de données à grande échelle : 600 913 projets Scratch publics, excluant les projets vides et mixtes
- Données d'expérience en classe : 34 élèves allemands de neuvième année ayant une expérience en programmation Scratch
- Projets d'échafaudage : Utilisation du jeu Boat Race comme projet de base pour l'expérience en classe
- Fréquence de génération de questions : Nombre total de générations pour chaque type de question et pourcentage de projets couverts
- Analyse de corrélation : Coefficient de corrélation de Pearson entre la performance des étudiants aux questions et le degré d'accomplissement des tâches de programmation
- Analyse de couverture : Pourcentage de couverture de projets pour chaque dimension du Block Model
Puisqu'il s'agit de la première recherche QLCs pour Scratch, la validation s'effectue principalement par :
- Comparaison conceptuelle avec les QLCs existants pour les langages textuels
- Vérification systématique basée sur le cadre théorique
- Vérification d'application dans des contextes d'enseignement réels
- Extension d'outils : Basée sur l'outil d'analyse statique LitterBox
- Format de sortie : Format JSON, incluant des fragments de code avec la syntaxe ScratchBlocks
- Présentation des questions : Mise en évidence des parties de code cible (comme montré à la Figure 1a)
- Mécanisme de notation : 0,2 point pour chaque sélection correcte dans les questions à choix multiples, 1 point pour la réponse correcte dans les questions à choix unique
- Statistiques globales : 54 118 694 questions générées sur 600 913 projets
- Questions les plus fréquentes :
- Purpose of Script : 9 748 844 fois (couverture de 100 % des projets)
- Purpose of If Condition : 5 103 322 fois (couverture de 41,1 % des projets)
- Scripts for Actor : 3 524 268 fois (couverture de 100 % des projets)
- Questions les moins fréquentes :
- My Block Definition : 368 712 fois (couverture de 11,3 % des projets)
- Purpose of Loop Condition : 486 902 fois (couverture de 15,2 % des projets)
| Dimension | Atomique | Bloc | Relationnel | Macro |
|---|
| Textuelle | 64,5 % | 61,2 % | 46,5 % | 100,0 % |
| Exécution | 30,4 % | 58,4 % | 99,0 % | 71,1 % |
| Objectif | 49,0 % | 100,0 % | 31,2 % | 100,0 % |
- Coefficient de corrélation : r = 0,467 (p = 0,005)
- Force de corrélation : Corrélation positive modérée
- Significativité statistique : p < 0,01, statistiquement significatif
- Signification pratique : La capacité des étudiants à répondre aux QLCs est significativement corrélée à leur degré d'accomplissement des tâches de programmation
- Vérification d'universalité : Les 30 types de questions peuvent tous être générés fréquemment dans les projets réels
- Caractéristiques hiérarchiques : Les questions de haut niveau (comme l'objectif du programme) peuvent être générées dans presque tous les projets, tandis que les questions de bas niveau dépendent de constructions de programmation spécifiques
- Preuve d'efficacité : Les QLCs peuvent effectivement servir d'indicateur valide de la capacité de compréhension des programmes
- Valeur pédagogique : Peut être utilisé pour détecter les lacunes dans les connaissances préalables des étudiants
- Évaluation de la compréhension des programmes : Les méthodes traditionnelles se concentrent principalement sur le traçage du code, l'interprétation et les compétences en écriture
- Génération automatique de questions : Outils existants de génération automatique de questions pour les langages textuels comme Java
- Éducation en programmation par blocs : Application généralisée de Scratch comme langage d'introduction à la programmation
- Héritage théorique : Adoption du Block Model, un cadre théorique établi de compréhension des programmes
- Extension technique : Application pour la première fois du concept QLCs aux langages de programmation par blocs
- Innovation d'outils : Mise en œuvre de la génération automatique de questions pour Scratch basée sur l'outil LitterBox
- Adaptabilité linguistique : Conception spécifiquement adaptée aux caractéristiques des langages de programmation par blocs
- Complétude systématique : Conception systématique des questions basée sur un cadre théorique
- Praticité : Validation à grande échelle et application en classe réelle
- Faisabilité technique : Possibilité de générer automatiquement un grand nombre de questions de compréhension significatives pour les programmes Scratch
- Efficacité pédagogique : Les questions générées peuvent évaluer efficacement la capacité de compréhension des programmes des étudiants
- Valeur pratique : Fourniture d'un outil d'évaluation automatisé et évolutif pour l'éducation Scratch
- Évaluation de texte libre : L'évaluation automatique des questions ouvertes nécessite toujours une intervention humaine
- Couverture des questions : Couverture insuffisante au niveau bas pour certaines constructions spécifiques à Scratch
- Échelle expérimentale : La taille de l'échantillon de l'expérience en classe est relativement petite (34 étudiants)
- Contrainte de temps : Les limitations de temps en classe peuvent affecter les résultats
- Intégration de LLM : Utilisation de grands modèles de langage pour évaluer automatiquement les réponses en texte libre
- Extension des questions : Ajout de plus de types de questions ciblant les constructions spécifiques à Scratch
- Interface utilisateur : Développement d'une interface adaptée à l'utilisation en classe pour la génération et la gestion des questions
- Recherche sur les effets à long terme : Évaluation de l'impact à long terme des QLCs sur les résultats d'apprentissage
- Innovation forte : Première application systématique des QLCs aux langages de programmation par blocs, comblant un vide de recherche
- Fondement théorique solide : La conception systématique basée sur le Block Model assure l'intégrité théorique des questions
- Expérimentation complète : Combinaison d'analyses de données à grande échelle et d'expériences en classe, vérifiant la faisabilité et l'efficacité de la méthode
- Valeur pratique élevée : La publication d'outils open-source permet l'application directe des résultats de recherche à la pratique pédagogique
- Rédaction claire : Structure d'article claire, description précise des détails techniques
- Limitations d'évaluation : L'évaluation des questions en texte libre nécessite toujours une intervention humaine, limitant l'automatisation complète
- Limitation d'échantillon : La taille de l'échantillon de l'expérience en classe est petite, nécessitant une validation à plus grande échelle
- Analyse insuffisante en profondeur : Manque d'analyse fine de l'efficacité des différents types de questions
- Questions d'adaptabilité : Discussion insuffisante sur l'adaptation aux différents groupes d'âge et niveaux de compétence
- Contribution académique : Fourniture d'une nouvelle direction de recherche et d'outils pour le domaine de l'évaluation de l'éducation en programmation
- Valeur pratique : Fourniture d'outils d'évaluation automatisés pratiques pour les enseignants Scratch
- Reproductibilité : Le code open-source et les configurations expérimentales détaillées assurent la reproductibilité de la recherche
- Potentiel de promotion : La méthode est extensible à d'autres langages et plateformes de programmation par blocs
- Éducation en programmation K-12 : Particulièrement applicable aux classes utilisant Scratch pour l'initiation à la programmation
- Plateformes d'apprentissage en ligne : Peut être intégré aux systèmes d'apprentissage en ligne de programmation pour fournir des retours automatisés
- Formation des enseignants : Aide les enseignants à mieux comprendre le niveau de compréhension des programmes des étudiants
- Outils de recherche : Fournit des outils d'évaluation standardisés pour la recherche en éducation en programmation
L'article cite 23 références importantes couvrant les domaines de la théorie de la compréhension des programmes, de l'évaluation de l'éducation en programmation, des outils d'analyse Scratch et d'autres domaines de recherche connexes. Les travaux particulièrement dignes d'attention incluent l'article original du Block Model, les travaux connexes de l'outil LitterBox, ainsi que les recherches empiriques sur la relation entre la compréhension des programmes et la capacité de programmation.