Application Web de rendu d'énoncé avec variantes, pour évaluer les étudiant·e·s de manière individuelle.
Énoncé est une alternative partielle à js-test. Elle a vocation d'être plus minimale et agnostique, au niveau technique mais aussi vis à vis de l'interface avec les étudiant·e·s. En effet, elle ne gère pas le rendu des étudiant·e·s. Énoncé se contente de générer un énoncé partiellement individualisé pour chaque identifiant d'étudiant·e.
-
Écrire l'énoncé du devoir au format Markdown, dans le fichier
data/enonce.md. -
[Optionnel] Ajouter des variantes dans l'énoncé, en fonction du nombre passé en paramètre.
-
Publier l'énoncé sur
surge.shà l'aide du scriptnpm run deploy. -
Attribuer à chaque étudiant·e un numéro unique aléatoire, puis leur transmettre l'URL de l'énoncé incluant ce numéro en paramètre. Leur demander de rendre leur travail via la plateforme de votre choix. (ex: email ou autre)
-
Au moment de la correction des copies, ouvrir l'URL dédiée de chaque étudiant·e, pour corriger le rendu en fonction de sa variante d'énoncé.
L'usage de Google Classroom demande un peu plus de configuration mais permet de simplifier la génération et transmission des énoncés aux étudiant·e·s.
-
Avant de commencer, créer un projet et un identifiant OAuth 2.0 permettant d'accéder à l'API de Google Classroom (cf guide), puis coller le
client_idainsi obtenu dans la propriétégoogle_signin_client_iddu fichierdata/auth.json. -
À l'étape 4, au lieu d'attribuer un numéro aléatoire à chaque étudiant·e, récupérer la liste des étudiants depuis Google Classroom (ex: à l'aide du CLI gclass) puis vérifier le numéro de variante de chaque étudiant·e, calculé à partir de leur adresse email. (cf
$ npm run check student-variants, documenté plus bas) -
Créer un devoir sur Google Classroom, avec un lien direct vers la racine de l'énoncé qui a été publié sur
surge.sh. -
Inviter les étudiant·e·s à s'identifier sur la page d'énoncé avec leur compte Google Classroom – en cliquant sur le bouton – puis à rendre leur travail via le devoir Google Classroom.
-
[Optionnel] Utiliser gclass ou classroom-submissions-to-pdf pour télécharger les rendus.
-
[Idée] Rendre un document Google Docs à chaque étudiant·e incluant son énoncé et son rendu, pour faciliter les annotations et échanges sur la copie.
$ git clone https://github.com/adrienjoly/enonce.git
$ cd enonce
$ npm install
$ npm test
$ npm run check combinations # from data/enonce.md => 3
$ npm run check render 422 # render statement for student #422
$ npm start # to test the UI locally
$ npm run deploy # to deploy using surge.ioGet the distribution of variants among students, from a csv list of students with email address in the first column:
$ cat students.csv | cut -d, -f1 | npm run check student-variants
# => e.g. { studentsPerVariant: [ 4, 7, 8 ] }# Install "enonce" (or replace "enonce" by "github:adrienjoly/enonce" in the commands below)
$ npm install github:adrienjoly/enonce
# Generate student IDs and variant numbers from their email address
$ cat "student-emails.txt" | npx enonce student-ids > "student-ids.tsv"
$ cat "student-emails.txt" | TEMPLATE="enonce.md" npx enonce student-variants
$ cat "student-emails.txt" | TEMPLATE="enonce.md" npx enonce get-student-variants > "student-variants.csv"
# Check and render the template
$ TEMPLATE="enonce.md" npx enonce combinations
$ TEMPLATE="enonce.md" npx enonce variant-data 54
$ TEMPLATE="enonce.md" npx enonce render 54 > "enonce-variant-54.md"
# Deploy the HTML page for a template
$ TEMPLATE="enonce.md" npx enonce deploy