5.2. Service JupyterHub « validation cours »#

validation est un module python et des programmes de gestion de cours sous jupyter/nbgrader avec notation / validation / détection de plagiat

(C) Marc BUFFAT, département mécanique, UCB Lyon 1

5.2.1. Installation#

installation dans un environnement virtuel python

  source ${VIRTUEL_ENV}/bin/activate

dans cet environnement exécuter les commandes suivantes dans le dossier du projet (Validation_cours)

  python3 setup.py clean
  python3 setup.py build
  python3 setup.py install

les modules python sont installés dans le répertoire site-package dans lib et les scripts dans le répertoire bin de l’environnement virtuel.

5.2.2. Gestion des notebooks de TP des étudiants#

5.2.2.1. bilanTP#

usage: bilanTP [-h] [-d] [-a] [--bilan] [--pdf] [--pandoc] [-l LISTE_ETU] [-b BASE_DIR] [--simil LISTE_COURS [LISTE_COURS ...]] nom_TP

analyse et validation de TP notebooks de cours

positional arguments:
  nom_TP                nom du TP

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           mode debug
  -a, --autograde       autograde des notebooks
  --bilan               creation fichier de bilan des notebooks
  --pdf                 sortie pdf des notebooks (html par défaut)
  --pandoc              sortie pdf des notebooks avec pandoc
  -l LISTE_ETU          fichier contenant les comptes étudiants à évaluer
  -b BASE_DIR           repertoire de base pour creer les fichiers
  --simil LISTE_COURS [LISTE_COURS ...]
                        cours1 cours2 .. = liste de cours pour test de similitude uniqt (dernier arg.)

5.2.2.2. genereTPhtml#

génération d’une version HTML (et éventuellement en pdf) du compte-rendu en markdown écrit dans un fichier: fichier.md avec création du fichier fichier.html (et fichier.pdf).

usage:  genereTPhtml [-pdf][-mathml][-mathjax] fichier

  génération d'une version html d'un compte rendu en markdown
    -pdf: option permettant en plus la génération d'une version pdf
    -mathml ou -mathjax: utilisation de mathml (uniquement avec firefox) ou mathjax pour le rendu LateX (defaut katex)
    fichier: nom du compte-rendu en markdown sans l'extension .md

utilise des fichiers de template et une installation de katex dans le répertoire templates/ de l’environnement virtuel.

5.2.3. système d’exercises auto-corrigés en Python dans un notebook#

C’est une version simplifié du système d’exercices décrit dans la section suivante, permettant de l’utiliser avec un notebook

On gère la liste des exercices dans une cellule, en spécifiant une liste d’exercices fixes ou tirés au hasard ainsi que le nom des fonctions que les étudiants doivent écrire (dans le même ordre) dans un fichier python (sous forme de bibliothèque python). Cela génère un fichier de configuration qui sera lu par le programme de validation BilanTP

    from mabib import somme_carres
    from validation.config import UserConfig
    UserConfig(fichier_python="nom_biblio.py",Exos=["pge_test1"],NOMS=["pge_etu"],CONF=None)

Pour tester un exercice directement dans le notebook:

    assert(test_function(fonction_etu,fonction_test))

il faut éventuellement importer la bibliothèque étudiant avant (utiliser %load_ext autoreload pour le rechargement automatique en cas de modification du fichier)

test_exo : permet aux étudiants de tester leur librairie mabib.py en ligne de commande

      test_exo mabib.py  pge_etu pge_test

syntaxe de test_exo:

test_exo [-d/-l[sect] ] fichier fonction nom_exo [arg]

     fichier : nom du fichier python (avec extension .py) 

     fonction: nom de la fonction à valider

     nom_exo : nom de l'exo pour la validation (ex exo11)

     -d      : mode DEBUG (option)

     -l [sec]: liste des exos dans la section sec (option)

     arg_exo : argument exercise (optionnel)

5.2.4. système d’exercises auto-corrigés en Python (version autonome)#

config_exo, valide_exo

5.2.5. enseignant#

pour tester ces programmes, il faut créer le répertoire:

${VIRTUAL_ENV}/commun/exchange

où seront créer les configurations étudiants dans les sous-répertoires de TP

5.2.5.1. generation d’une configuration#

config_exo [-d] [-liste Saa] [-s NOM_TP] duree Saa Sbb Scc exo1 exo2 -exo3 -exo4....

génération d’un fichier de configuration pour des exercices dans les sections Saa Sbb Scc … (1 par section) ou on fixe l’exercice exo1,exo2 ou on enleve des exercices -exo3 -exo4

On peut répéter les sections pour avoir plusieurs exercices (différents) par sections .

5.2.5.2. generation d’un fichier de bilan et notes (et table de similitude)#

bilan_exo [-d] [-i/--indice indicemin] [-t/--tomuss] [-l/--levenshtein] NOM_TP [fichier]

options: 

-tomuss pour un fichier csv de notes pour tomuss

-levenshtein  utilise indice de levenshtein au lieu de l'indice jaccard (par defaut) pour calculer les similitudes

-indice levelmin  niveau minimum (sur 100) de similitude pour une prise en compte de la similitude (default 80) 

 fichier.csv : fichier resultat (et similitude) au format csv (sans extension)

on génère aussi un fichier tar avec les exercices étudiants

5.2.6. etudiant#

validation d’exercices

valide_exo [init monfichier.py / list / info /exo mafonction]

 valide_exo init monfichier.py

           initialise les exercices a valider en spécifiant le fichier python monfichier.py

 valide_exo list

           liste les exercices a valider

 valide_exo info

	       affiche la configuration

 valide_exo exon mafonction

           valide la fonction mafonction pour l'exercice exo  (cette fonction doit être écrite dans le fichier monfichier.py)

5.2.7. test exo#

permet de tester un exercice (uniquement pour les tests)

test_exo [-d/-l[sect] ] fichier fonction nom_exo [arg]

     fichier : nom du fichier python (avec extension .py) 

     fonction: nom de la fonction à valider

     nom_exo : nom de l'exo pour la validation (ex exo11)

     -d      : mode DEBUG (option)

     -l [sec]: liste des exos dans la section sec (option)

     arg_exo : argument exercise (optionnel)

5.2.8. module python validation (classe et exercices)#

dans le repertoire validation

5.2.9. exemples et tests#

dans le repertoire tests

5.2.10. bibliothéque d’exercises (dans les fichiers exoSxx.py):#

  • liste_exos.md

  • liste des exercises d’une section Sxx

        test_exo -l Sxx
    

5.2.11. Authors and acknowledgment#

Marc BUFFAT, dpt mécanique, Université Lyon 1

5.2.12. License#

Projet sous licence libre, mais sans garantie

5.2.13. Project status#

projet en cours de développement