Thèse soutenue

Apprentissage de la programmation par les problèmes : génération automatique d'exercices et recommandation

FR  |  
EN
Auteur / Autrice : Théo Barollet
Direction : Fabrice RastelloFlorent Bouchez-Tichadou
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 24/11/2023
Etablissement(s) : Université Grenoble Alpes
Ecole(s) doctorale(s) : École doctorale Mathématiques, sciences et technologies de l'information, informatique (Grenoble ; 1995-....)
Partenaire(s) de recherche : Laboratoire : Laboratoire d'informatique de Grenoble
Jury : Président / Présidente : Abdelhamid Chaachoua
Examinateurs / Examinatrices : François Bouchet
Rapporteurs / Rapporteuses : Dominique Colnet, Thibault Carron

Mots clés

FR  |  
EN

Mots clés contrôlés

Résumé

FR  |  
EN

L'enseignement de l'informatique est une tâche importante puisque de plus en plus de personnes doivent utiliser ces compétences dans leur travail.En programmation il est impossible d'éviter l'apparition de bugs. Le debug est une tâche primordiale en programmation et n'est pourtant que peu enseignée dans les cursus d'informatique.On apprend principalement le debug par l'expérience et la pratique en dehors des cursus scolaires et on devient plus efficace avec le temps.Dans cette thèse, nous essayons d'enseigner le debug et fournir des exercices de debug à destination des programmeurs novices.Il y a aujourd'hui déjà plusieurs Système de Tutorat Intelligent (ITS en anglais) sur des sujets plus simples comme l'algèbre au collège.Ces systèmes hébergent une base de données d'exercices et fournissent une recommandation sur le prochain exercice à effectuer.Nous verrons qu'il est probablement trop difficile d'adapter ces systèmes de recommandation à une base d'exercices de debug étant donnée la complexité du processus de debug.Nous étudierons à côté brièvement la génération automatique d'exercices de debug.Cela montrera des résultats loin des attentes et va nécessiter un changement d'approche pour notre enseignement du debug.Nous présentons Agdbentures, un jeu d'entrainement au debug avec une difficulté croissante et des exercices désigné manuellement.Chaque exercice prend la forme d'un mini-jeu qu'il est impossible de terminer sans corriger un ou plusieurs bugs dans le code source.Beaucoup d'efforts ont été faits pour accroitre l'engagement des apprenants.Les premiers résultats expérimentaux d'Agdbentures avec des étudiants de L2 sont engageants. Ils montrent en effet que les étudiants apprécient chercher et résoudre les bugs dans l'environnement d'Agbentures.Pendant le développement d'Agdbentures, nous avons réalisé que le monitoring d'un programme externe est en fait une tâche plus générale en enseignement de l'informatique, par exemple pour des outils de visualisation.Nous avons développé Easytracker, un framework pour monitorer l’exécution d'un programme de manière agnostique au langage de programmation utilisé pour C (ou n'importe quel langage supporté par GDB) et Python.Easytracker est utilisé en tant que bibliothèque pour abstraire beaucoup de l'ingénierie requise pour le développement d'Agdbentures vis à vis du monitoring du programme source.Nous avons développé plusieurs autres outils basés sur Easytracker que nous utilisons en cours pour montrer l'exécution pas à pas d'un programme et démontrer les bénéfices d'Easytracker en écrivant ces outils puisque tout l'effort a pu être mis dans la visualisation du modèle mémoire directement.