d’un mooc à l’autrel’infrastructure codegradx particularisation pour le mooc ... accent mis...

36
D’un MOOC à l’autre Performance et généricité dans CodeGradX C. Queinnec Pr. émérite UPMC - LIP6 LRDE - 17 décembre 2014 CC-BY-NC-SA BY C.QUEINNEC 1/36

Upload: others

Post on 08-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

D’un MOOC à l’autre

Performance et généricité dansCodeGradX

C. QueinnecPr. émérite UPMC - LIP6

LRDE - 17 décembre 2014

CC-BY-NC-SA BY C.QUEINNEC 1/36

Page 2: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

MOOC

• Massive (Small)• Open• Online• Course

MOOC = Enseignement à distance+ réseau social+ évaluation continue+ élasticité

CC-BY-NC-SA BY C.QUEINNEC 2/36

Page 3: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Plan

• Le MOOC « Programmation récursive »• L’infrastructure CodeGradX• Particularisation pour le MOOC• Travaux futurs

CC-BY-NC-SA BY C.QUEINNEC 3/36

Page 4: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Le MOOC« Programmation récursive »

CC-BY-NC-SA BY C.QUEINNEC 4/36

Page 5: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Buts

• Introduction à l’informatique (dans la lignée du SICP)pour débutants, lycéens, enseignants d’ISN

• Fondé sur un cours créé en 2000 et encore donné en2013 à l’UPMC en L1 S1

• Livre de cours, livre d’exercices, videos (2004 iTunes),bandes sons (mp3)

• Nouveaux matériaux en CC-BY-NC-SA

• Doté d’exercices à correction automatisée• Accent mis sur les tests (Test Driven Development)• Avantages : récursion, Scheme, non-genré

CC-BY-NC-SA BY C.QUEINNEC 5/36

Page 6: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Séquencement

• 10 semaines de cours (mars-mai 2014)• parution tous les mardis matin (vidéos, transparents,

exercices)• et une brève dans le forum• inscription non obligatoire (mais sans accès au forum

ni aux exercices)• ressources toujours en ligne (même si MOOC fini)

Contenu :1. Récursion sur entiers naturels2. Récursion sur listes3. Récursion sur arbres4. Processus d’évaluation (texte→ valeur)

CC-BY-NC-SA BY C.QUEINNEC 6/36

Page 7: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Chiffres finaux (au 27 mai 2014)

inscrits 585inscrits avec nom-prénom 144inscrits au forum 110intervenants au forum 13sujets, messages sur forum 114, 450ayant tenté au moins 1 exercice 106ayant tenté au moins 10 exercices 74réponses au questionnaire 1 48réponses au questionnaire 2 11badgés récursion linéaire 14badgés récursion arborescente 6ayant réussi au moins la moitié des exercices à aumoins à 80%

26

ayant tenté l’examen 25+10certificats attribués 24

CC-BY-NC-SA BY C.QUEINNEC 7/36

Page 8: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Résumé des chiffres finaux (au 27 mai 2014)

25

Active

Laureate

Social

500

100

15

Enrolled

CC-BY-NC-SA BY C.QUEINNEC 8/36

Page 9: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Exercices/semaine

nombre d’essais, réussites à 80% ou plus, à 100%.

CC-BY-NC-SA BY C.QUEINNEC 9/36

Page 10: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

De bric et de broc (merci Google)

CC-BY-NC-SA BY C.QUEINNEC 10/36

Page 11: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Infrastructure CodeGradX

CC-BY-NC-SA BY C.QUEINNEC 11/36

Page 12: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

À la base

copierapport de

correction

exercice

CodeGradX

+note

Plate-forme en fonctionnement depuis 2008 et 140 000copies corrigées

CC-BY-NC-SA BY C.QUEINNEC 12/36

Page 13: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Serveurs spécialisés

exercice

copie

CodeGradX

correcteur

Serveur de stockage

énoncé

correction

rapport de

Serveur d’exercices

CC-BY-NC-SA BY C.QUEINNEC 13/36

Page 14: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Particularisation via proxy

exercice

copie

CodeGradX

correcteur

Serveur de stockage

Serveurd’acquisition

Proxy

énoncé.XML

rapport.XML

protocoles REST

IDE.js

XSL

XSL

correction

rapport de

Serveur d’exercices

CC-BY-NC-SA BY C.QUEINNEC 14/36

Page 15: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Identification et bases de données

exercice

copie

CodeGradX

correcteur

Serveur de stockage

Serveurd’acquisition

énoncé.XML

rapport.XML

protocoles REST

IDE.js

XSL

XSL

Identification

Proxy

identification.json

correction

rapport de

Serveur d’exercices

CC-BY-NC-SA BY C.QUEINNEC 15/36

Page 16: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Safecookies

• Les serveurs d’acquisition et d’exercices nenécessitent pas d’accès à la base mais n’acceptentde requêtes que d’utilisateurs autorisés.

• Une identification réussie mène à un cookiecontenant une sorte de certificat que peuvent vérifierces serveurs.

• Les exercices sont cherchés avec une URL contenantaussi une telle sorte de certificat afin d’éviter d’êtrepillé.

• Les rapports sont protégés par des UUID.

CC-BY-NC-SA BY C.QUEINNEC 16/36

Page 17: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Multiples correcteurs en parallèle

exercice

copie

correcteur

Serveur de stockage

Serveurd’acquisition

énoncé.XML

rapport.XML

protocoles REST

IDE.js

XSL

XSL

Identification

Proxy

identification.json

MD

MS

correction

rapport de

Serveur d’exercices

CC-BY-NC-SA BY C.QUEINNEC 17/36

Page 18: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Correcteur confiné

Marking Driver

E

S

Marking Slave

AKVM

LXC

• VM (kvm, libvirt, vmware, virtualbox)• disque de 12G• assure le gel des bibliothèques.• Seul MD connaît les identités des apprenants.

CC-BY-NC-SA BY C.QUEINNEC 18/36

Page 19: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Version actuelle des correcteurs confinés

Une VM encapsulant deux images Docker :

Marking Driver

E

S

Marking Slave

KVM

Docker

Docker

A

• règle le problème de la mise à jour

CC-BY-NC-SA BY C.QUEINNEC 19/36

Page 20: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Déconnexion réticulaire

E

Marking Slave

Docker

A

S

KVM

S’

Copier

GC

Marking Driver

Docker

CC-BY-NC-SA BY C.QUEINNEC 20/36

Page 21: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Exercice

Un exercice est juste un tar.gz, à déploiement aisé,contenant :• un énoncé• des scripts de correction• des pseudo-copies• et un descripteur XML

Les scripts sont confinés en fonctionnalités, en temps et enproduction d’octets.

Actuellement existent des exercices pour C, Java, bash,Octave, Scheme, OCaml, Python.

L’éternité pour vos exercices

CC-BY-NC-SA BY C.QUEINNEC 21/36

Page 22: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Scripts de correction

Code appartenant à l’auteur de l’exercice mais exécutédans le HOME de l’étudiant.

• exercice = ensemble de questions• question = suite de scripts

• par script :• directives de confinement• code du script• stdout vers l’apprenant (y compris notes partielles)• stderr vers l’auteur de l’exercice

• stdout vers auteur• stderr vers mainteneur CodeGradX

• Compilation de l’enchaînement vers Bash• Nettoyage du flux XML produit vers l’apprenant

CC-BY-NC-SA BY C.QUEINNEC 22/36

Page 23: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Cycle de vie d’un exercice

MD MS ejob→

ex.tgz← ex.tgzex.tgz→ installe

job→ corrigerapport← rmStudent

rapport ←tidy. . .

plus tarddesinstalle

CC-BY-NC-SA BY C.QUEINNEC 23/36

Page 24: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Conseils pour exercices

• Écrire énoncé, solution et correcteur en même temps• Verbaliser la correction• Pas de question tout ou rien• Ne pas oublier de confiner• Écrire des pseudo-copies• . . . les enrichir au gré des expériences• Ne pas perturber le HOME de l’étudiant• Utiliser TMPDIR• Factoriser code commun dans l’installation de

l’exercice• Utiliser bibliothèque tests unitaires progressifs

• Scheme, Java, Python

CC-BY-NC-SA BY C.QUEINNEC 24/36

Page 25: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Cas du MOOC

CC-BY-NC-SA BY C.QUEINNEC 25/36

Page 26: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Environnement de développement

Distant Scheme interpreter (bigloo)

Local Scheme Interpreter (Javascript)

CC-BY-NC-SA BY C.QUEINNEC 26/36

Page 27: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Notation

Le langage étant fonctionnel, on demande des fonctions.L’apprenant écrit (et l’auteur de l’exercice itou) :

(define (foo ...) fs... )

(verifier foo vs(foo ...) => ... ; au moins 2 tests(foo ...) => ... )

1. cohérence(0% éliminatoire) : on vérifie vs(fs)

2. correction1(0% (Ouf !)) : on vérifie vs(ft)

3. correction2(50%) : on vérifie vt(fs)

4. couverture(50%) : on compare vs(fs) et vt(fs)

CC-BY-NC-SA BY C.QUEINNEC 27/36

Page 28: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

De l’importance de la verbalisation

CC-BY-NC-SA BY C.QUEINNEC 28/36

Page 29: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Un brin de sémantique

;; code etudiant(define (bar t u) ...)(define (foo x)

(bar x x) )( v e r i f i e r foo

(foo 1) => 2 )

foo utilise bar

CC-BY-NC-SA BY C.QUEINNEC 29/36

Page 30: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Un brin de sémantique (2)

;; code etudiant(define (bar t u) ...)(define (foo x)

(bar x x) )(define (hux z) ...)( v e r i f i e r foo

(hux (foo 1)) => 2 )

mais vérifier foo nécessite hux

CC-BY-NC-SA BY C.QUEINNEC 30/36

Page 31: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Un brin de sémantique (3)

;; code etudiant ;;; Code enseignant(define (bar t u) ...) (define (foobar x) ...)(define (foo x) (define (foo t)

(bar x x) ) (foobar t) )(define (hux z) ...)( v e r i f i e r foo ( v e r i f i e r foo

(hux (foo 1)) => 2 ) (foo 2) => 3 )

Mais foot nécessite foobartMais tester foot utilise huxs.

CC-BY-NC-SA BY C.QUEINNEC 31/36

Page 32: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Un brin de sémantique (4)

;; code etudiant ;;; Code enseignant(define (bar t u) ...) (define (foobar x) ...)(define (foo x) (define (foo t)

(bar x x) ) (foobar t) )(define (hux z) ...) (define (boolify a)

(and a #t) )( v e r i f i e r foo ( v e r i f i e r (foo)

(hux (foo 1)) => 2 ) (boolify (foo 2))=> 3 )

Les codes sont clos dans leur environnement global dedéfinition.

CC-BY-NC-SA BY C.QUEINNEC 32/36

Page 33: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Sur-implantation

Le code de l’apprenant est comparé au code del’enseignant. Malheureusement, le code de l’enseignantdoit être plus précautionneux que demandé parl’énoncé.

• S’il est demandé une fonction foo: nat -> X

• et que l’apprenant code foo: int -> X

• et qu’il teste (foo -1) alors• il est hors épure et vs(foot) échouera !• Pour donner un message signifiant, foot doit tester

explicitement que l’argument est bien un nat.

CC-BY-NC-SA BY C.QUEINNEC 33/36

Page 34: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Travaux futurs

CC-BY-NC-SA BY C.QUEINNEC 34/36

Page 35: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

En cours

• ε-better peeping• Sélection de copies aidantes ou intéressantes• Annotation de copies• Duo-duel

• éditeur partagé

• Proposition d’exercices

CC-BY-NC-SA BY C.QUEINNEC 35/36

Page 36: D’un MOOC à l’autreL’infrastructure CodeGradX Particularisation pour le MOOC ... Accent mis sur les tests (Test Driven Development) ... inscrits avec nom-prénom 144 inscrits

Futur

MOOC cherche parrainage

Des questions ?

CC-BY-NC-SA BY C.QUEINNEC 36/36