Vers un exerciseur adaptatif pour apprendre la programmation en autonomie Programmer’s Learning Machine [email protected] E´quipe-projet Algorille, Nancy Journ´ee MOOC Lab 13 janvier 2014 Computational Science of Computer Systems Computational Science Complex models to understand and predict the studied phenomenons Large-Scale Distributed Systems (cid:73) Complex hierarchies : grid, cluster, multicore (cid:73) Massive parallelism : 106 cores (109 in 2020) (cid:73) Heterogeneity (GPU, SOC); Dynamicity Scientific Challenge: Study system correctness and performance (cid:73) Need for adapted scientific instruments, combining approaches (cid:73) Modeling to understand system dynamics; Simulation to predict experiments SimGrid scientific instrument (cid:73) Versatile, validated, usable (dozens papers per year by hundreds) (cid:73) Full-featured model-checker toward formal verification of MPI applications MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 2/15 Mon exp´erience d’enseignant L’autre moiti´e du temps (cid:73) Enseignant depuis ma maˆıtrise, depuis 2005 `a Telecom Nancy (cid:73) D’abord sur mes recherches, mais niveau des ´el`eves faible en programmation (cid:73) Depuis 2006 : bases de l’aglo-prog (algo, Java, scala, C, shell, syst`emes) Constat : seuls ceux qui savent programmer avant savent apr`es (cid:73) Les autres ont des probl`emes avec if au bout de 6 mois! Comment aider ceux qui en ont besoin? (cid:73) E´normes diff´erences de niveaux en entr´ee : ceux qui savent trustent la parole (cid:73) Expliquer les bases de base : aussi difficile qu’enseigner `a faire du v´elo (cid:73) Si seulement ils pouvaient bosser par eux-mˆemes... (cid:73) ... si seulement nos TP pouvaient ˆetre moins arides et plus attirants PLM : Programmer’s Learning Machine (2008) (cid:73) D´evelopp´e (avec G. Oster) pour une mise `a niveau pseudo-autonome tutor´ee MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 3/15 PLM aujourd’hui Exerciseur interactif d´edi´e `a la programmation (cid:73) Outil interactif et graphique pour apprendre `a coder (cid:73) C’est en forgeant qu’on devient forgeron (et qu’on apprend `a aimer ¸ca) entity Code area ongoing Mission text World view execution Interactive controls console logs Usage classique (cid:73) On lit la mission `a gauche, on compare `a droite l’´etat initial et l’´etat d´esir´e (cid:73) On tape le code, on clique sur un bouton, et ¸ca s’anime `a droite (cid:73) Boucle de feedback tr`es courte (et motivante pour les ´el`eves) MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 4/15 Bonnes propri´et´es de PLM (cid:73) L’interface est bilingue anglais/franc¸ais (soon italien?) (cid:73) Les exercices sont trilingues Java/Scala/Python (+javascript/ruby?) (cid:73) Mode d´emo, ex´ecution pas-`a-pas, vitesse d’animation pas `a pas, sessions (cid:73) Plusieurs mondes parall`eles pour mieux tester le code ´el`eve (cid:73) Documentation embarqu´ee dans l’outil L’univers des buggles (cid:73) Bouger : avancer, tourner, reculer. Getter/setter de position et de direction (cid:73) Buggle : getter/setter de couleur, de couleur de brosse, lever/baisser (cid:73) Interactions : Lire la couleur de la case; Lire / ´ecrire du texte par terre (cid:73) Baggles : Des biscuits qu’on trouve par terre, et qu’on peut ramasser (cid:73) Murs : tester leur pr´esence; ils sont infranchissables MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 5/15 D’autres univers Diff´erents types d’univers pour diff´erentes situations-probl`emes L’univers des tortues (cid:73) Moins d’interaction avec le monde, mais virages au degr´e pr`es (cid:73) Avance, recule, tourne, l`eve/baisse crayon, getter/setter d’angle et position (cid:73) C’est le logo classique, toujours efficace pour la r´ecursivit´e L’univers des tris (cid:73) Un tableau, auquel on acc`ede par les builtins uniquement (cid:73) D´ecompte exact des acc`es et comparaisons identification de l’algo de tri (cid:73) Une vue temporelle pour voir (et comparer)(cid:59)la chronologie de l’algorithme Encore plus d’univers (cid:73) Drapeau hollandais, Cr´epier, Baseball multicolor : variation sur les tris (cid:73) Bat : tests simples de fonctions, `a la jUnit (cid:73) Hano¨ı : les tours; Lightbot : jeu / casse tˆete (cid:73) Ajouter un univers : 100 `a 300 lignes de Java MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 6/15 Nos ´el`eves travaillent par eux-mˆemes Des gens utilisent l’environnement Dans twitter Dans Debian Mais je ne sais pas qui! MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 8/15 Notre progression p´edagogique en CS0 Objectif : tactical programming (cid:73) Le B-A-BA de la programmation : ´ecrire des trucs de base sans difficult´e (cid:73) Que ce ne soit plus un probl`eme quand les algos seront non-triviaux Impl´ementation language-agnostic (Java, Python, Scala) (cid:73) Instructions (et commentaires) (cid:73) Conditionnelles (+40 exercices Bat pour savoir ´ecrire des tests logiques) (cid:73) Boucles while; switch cases (+ 3 exos d’applications) (cid:73) Les variables (cid:73) Boucles for et do/while (cid:73) M´ethodes (+5 exos qui forcent `a factoriser le code) (cid:73) M´ethodes avec r´esultat, avec param`etres (cid:73) Tableaux (+12 exos d’applications, certains en Bat) (cid:73) Application:parcoursdetableau2D(5exos)lesturmites(turing2D–4exos) 160 exos sc´enaris´es, pour plus de 40h de bonheur MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 9/15 C’est mˆeme document´e dans PLM directement Malheureusement, ceci n’est pas g´en´er´e automatiquement (pas toujours `a jour) MartinQuinson Versunexerciseuradaptatifpourapprendrelaprogrammationenautonomie? 10/15
Description: