Download - L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Transcript
Page 1: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

PLM: Programmer's Learning Machine

L'exerciseur du programmeur

Martin Quinson

17 mars 2016

Page 2: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

La génèse de PLM: mon expérience d'enseignant

I Enseignant d'informatique depuis ma maîtrise, au 20ième siècle

Constat: seuls ceux qui savent programmer avant savent après

I Les autres ont des problèmes avec if au bout de 6 mois!

Comment aider ceux qui en ont besoin?

I Énormes di�érences de niveaux en entrée: ceux qui savent trustent la paroleI Si seulement ils pouvaient bosser par eux-mêmes. . .

I . . . si seulement nos TP pouvaient être moins arides et plus attirants

PLM: Programmer's Learning Machine (2008)

I Développée (avec G. Oster) pour une mise à niveau pseudo-autonome tutoréeI Inspirée des Buggles de F. Turbak � Wellesley College

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 2/16

Page 3: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

La PLM aujourd'hui

Exerciseur interactif dédié à la programmation

I C'est en forgeant qu'on devient forgeron

Mission text World view

Interactivecontrols

entity

1. On lit la mission à gauche, compare à droite l'état initial et l'état désiré

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 3/16

Page 4: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

La PLM aujourd'hui

Exerciseur interactif dédié à la programmation

I C'est en forgeant qu'on devient forgeron

2. On tape le code, on clique sur un bouton, et ça s'anime à droite

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 3/16

Page 5: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

La PLM aujourd'hui

Exerciseur interactif dédié à la programmation

I C'est en forgeant qu'on devient forgeron

Code area

console logs

ongoing execution

3. Boucle de feedback très courte (et motivante pour les élèves)

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 3/16

Page 6: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Juste un IDE pour débutants ?

I Exerciseur 6= IDE: Nombreux exercices, Progressions cohérentesI Multi-langages: Java/Scala/Python (+ C/javascript/Blockly/Ruby)

I Multi-langues: Anglais/Français/Brésilien (+ italien/chinois/espagnol)

I Multi-univers: Di�érents types de micro-mondes

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 4/16

Page 7: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Juste un IDE pour débutants ?

I Exerciseur 6= IDE: Nombreux exercices, Progressions cohérentesI Multi-langages: Java/Scala/Python (+ C/javascript/Blockly/Ruby)

I Multi-langues: Anglais/Français/Brésilien (+ italien/chinois/espagnol)

I Multi-univers: Di�érents types de micro-mondes

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 4/16

Page 8: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Notre progression pédagogique en CS0

Objectif: tactical programming

I Le B-A-BA de la programmation: écrire des trucs de base sans di�cultéI Que ce ne soit plus un problème quand les algos seront non-triviaux

Implémentation agnostique point de vue langage (Java, Python, Scala)

I Instructions & Commentaires; ConditionellesI Boucles while; switch cases

I VariablesI Boucles for et do/whileI Méthodes, Fonctions et ParamètresI TableauxI De nombreux exercices d'applications

200 exercices très scénarisés, (10 à 50+ heures)

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 5/16

Page 9: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Enseigner la récursivité en CS1

La récursivité pour les nuls

I Découpe le problèmeI Demande à un ami de résoudre les boutsI Fusionne les bouts de solutions

Micro-mondes dédiésI Listes récursives: longueur(), estMembre(), etcI Tortue récursive: Arbres, fractales classiques

I subtree() fournie pour aider à décomposer

I Hanoï et variations pour décomposerI Linéaire, Cyclique, Bicolore, Tricolore, etc

Conditions initiales Étape intermédiaire Objectif �nal

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 6/16

Page 10: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Enseigner la récursivité en CS1

La récursivité pour les nuls

I Découpe le problèmeI Demande à un ami de résoudre les boutsI Fusionne les bouts de solutions

Micro-mondes dédiésI Listes récursives: longueur(), estMembre(), etcI Tortue récursive: Arbres, fractales classiques

I subtree() fournie pour aider à décomposer

I Hanoï et variations pour décomposerI Linéaire, Cyclique, Bicolore, Tricolore, etc

Conditions initiales Étape intermédiaire Objectif �nal

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 6/16

Page 11: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Enseigner les tris en CS1

Découverte: Implémenter une douzaine d'algos (en véri�ant le nb d'opérations)

I Vue d'état et vue temporelles pour aider à la compréhension

Vue d'état Tri par insertion Tri à bulle Tri par sélection

Application: drapeau hollandais, crépier ou baseball

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 7/16

Page 12: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Questionnaire de satisfaction des apprenants

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 8/16

Page 13: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Point de vue d'enseignants

Usages en production

I Telecom Nancy : utilisé dans plusieurs modules (après mon départ)I Beaucoup d'intérêt, quelques usages disparates chez les collègues

Avant de l'utiliser chez vousI Utiliser un tel outil demande un gros travail de préparation

Tester en salle de TP, faire les exercices, anticiper les questionsI Un plan B en cellulose pour la première fois, mais c'est plaisant après

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 9/16

Page 14: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Créer des ressources

I Traduire: Un �chier po séparé

I Leçon: Juste un graphe d'exercices (liste + dépendances)

I Exercice: Mission + Monde initial + Entités correction

public class SlugTrackingEntity

extends SimpleBuggle {

// Some additional (hidden) code/* BEGIN TEMPLATE */boolean isFacingTrail() {

// Write your code here

/* BEGIN SOLUTION */if (isFacingWall())

return false;

forward();

boolean res =

getGroundColor().equals(Color.green);

backward();

return res;

/* END SOLUTION */}

/* END TEMPLATE */}

I Micro-monde: Monde + Vue + Entité + ControlPanel + SérialisationI 400 à 1500 lignes

https://github.com/BuggleInc/PLM/wiki

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 10/16

Page 15: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Créer des ressources

I Traduire: Un �chier po séparé

I Leçon: Juste un graphe d'exercices (liste + dépendances)

I Exercice: Mission + Monde initial + Entités correction

public class SlugTrackingEntity

extends SimpleBuggle {

// Some additional (hidden) code/* BEGIN TEMPLATE */boolean isFacingTrail() {

// Write your code here

/* BEGIN SOLUTION */if (isFacingWall())

return false;

forward();

boolean res =

getGroundColor().equals(Color.green);

backward();

return res;

/* END SOLUTION */}

/* END TEMPLATE */}

I Micro-monde: Monde + Vue + Entité + ControlPanel + SérialisationI 400 à 1500 lignes

https://github.com/BuggleInc/PLM/wiki

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 10/16

Page 16: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Créer des ressources

I Traduire: Un �chier po séparé

I Leçon: Juste un graphe d'exercices (liste + dépendances)

I Exercice: Mission + Monde initial + Entités correction

public class SlugTrackingEntity

extends SimpleBuggle {

// Some additional (hidden) code/* BEGIN TEMPLATE */boolean isFacingTrail() {

// Write your code here

/* BEGIN SOLUTION */if (isFacingWall())

return false;

forward();

boolean res =

getGroundColor().equals(Color.green);

backward();

return res;

/* END SOLUTION */}

/* END TEMPLATE */}

I Micro-monde: Monde + Vue + Entité + ControlPanel + SérialisationI 400 à 1500 lignes

https://github.com/BuggleInc/PLM/wiki

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 10/16

Page 17: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Créer des ressources

I Traduire: Un �chier po séparé

I Leçon: Juste un graphe d'exercices (liste + dépendances)

I Exercice: Mission + Monde initial + Entités correction

public class SlugTrackingEntity

extends SimpleBuggle {

// Some additional (hidden) code/* BEGIN TEMPLATE */boolean isFacingTrail() {

// Write your code here

/* BEGIN SOLUTION */if (isFacingWall())

return false;

forward();

boolean res =

getGroundColor().equals(Color.green);

backward();

return res;

/* END SOLUTION */}

/* END TEMPLATE */}

I Micro-monde: Monde + Vue + Entité + ControlPanel + SérialisationI 400 à 1500 lignes

https://github.com/BuggleInc/PLM/wiki

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 10/16

Page 18: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

PLM et le métier d'enseignant

I En médecine, le monitoring des patients aide au diagnostic du problèmeI Les enseignants travaillent en aveugle et demandent aux apprenants

I PLM libère le temps d'aider ceux en di�culté, mais on ne sait plus qui c'est

Activité sur Khan AcademyProgrès sur CodingBat

Problèmes sur un exo (Khan)Détail du problème (Khan)

I

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 11/16

Page 19: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

PLM et le métier d'enseignant

I En médecine, le monitoring des patients aide au diagnostic du problèmeI Les enseignants travaillent en aveugle et demandent aux apprenants

I PLM libère le temps d'aider ceux en di�culté, mais on ne sait plus qui c'estActivité sur Khan Academy

Progrès sur CodingBat

Problèmes sur un exo (Khan)Détail du problème (Khan)

ILa PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 11/16

Page 20: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Aider la recherche en didactique de l'informatique

I Chaque tentative est enregistrée anonymementI Lien à sens unique identité → sauvegardesI Rejeu possible de chaque tentative

I 234,975 soumissions: 56,994 réussi, 66,712 syntaxe, 111,269 erreur de logiqueI Scala: 185,960 (79%); Python: 27,872 (11%); Java: 18,849 (8%)

I Erreurs de logique probablement très instructives

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 12/16

Page 21: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Des traces d'apprenants très riches

Somme cumulative des étudiants ayant passé plus de X exercices

I https://github.com/BuggleInc/PLM-data

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 13/16

Page 22: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Des traces d'apprenants très riches

Somme cumulative des étudiants ayant écrit plus de X lignes de code

I https://github.com/BuggleInc/PLM-data

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 13/16

Page 23: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Futures évolutions de PLM

I Amélioration de l'ergonomie de l'interface

Pour le prof : outil d'aide à l'enseignement

I Éditeur d'exercices intégréI Dashboard : détection et aide au diagnostic d'élèves en di�cultéI Factorisation du code élèves à annoter

Pour l'apprenant : vers la khan de la programmation

I Remédiation personnalisée automatiqueI Renforcer la motivation: badges et streakI Blockly, Visualisation mémoireI Apprentissage actif: Q&A, proposer des exercices

Pour le chercheurI Learning AnalyticsI Test A/B en double aveugle

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 14/16

Page 24: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Architecture de la PLM complétement déployée

I De quoi résister à des centaines d'utilisateurs simultanés

I Ou bien, exécution locale d'un double clic sur le �chier jar

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 15/16

Page 25: L'exerciseur du programmeurpeople.irisa.fr/Martin.Quinson/blog/2016/0316/PLM.pdf · 2016-09-29 · La PLM aujourd'hui Exerciseur interactif dédié à la programmation I C'est en

Conclusions

La PLM veut aider plusieurs publics

I Élèves : apprennent à leur rythme dans un �jeu� sérieuxI Enseignants : simpli�e la menée d'exercices, monitoring d'élèves à aiderI Auteurs : réutilisation du code non-fonctionnel, retour par instrumentationI Chercheurs : Corpus de données, prescriptions automatiques

Pleins de petites idées pour la suite

I De nouveaux univers: backtracking, POO, système, HPC, DistribuéI De nouveaux langages: Tous les JSR231 et même le Caml ou le CI Finitions de l'interface et de l'ergonomie

Mais aller vraiment plus loin est un projet de recherche

I Multidisciplinaire et un peu balbutiant, mais passionnant !

Join us!

La PLM: L'exerciseur du programmeur Comment survivre à des étudiants qui programment 16/16