devoir.py
est un script écrit en python 3 qui permet d’initialiser un rapport d’épreuve à partir d’une feuille de calcul libreoffice et d’ajouter en fin de correction les statistiques du devoir avant publication en PDF. C’est un logiciel libre, distribué sous licence GPL v3.
devoir.py
est un script écrit en python 3 qui permet d’initialiser un rapport d’épreuve à partir d’une feuille de calcul libreoffice et d’ajouter en fin de correction les statistiques du devoir avant publication en PDF.
devoir.py
permet de :
devoir.py
s’appuie sur :
os
, sys
, subprocess
, shutil
, glob
, re
, argparse
, datetime
, math
et textwrap
;pdflatex
;C’est un logiciel libre, distribué sous licence GPL v3.
La dernière version est la 0.1.6 (25/02/2023).
Type | Fichier |
---|---|
code python | devoir.py |
feuille de calcul | devoir.ods |
documentation | devoir.pdf |
Pour utiliser devoir.py
, il est nécessaire d’avoir sur son ordinateur personnel :
Copier le fichier devoir.py
dans le répertoire /home/$(whoami)/bin
;
Le rendre exécutable
$ chmod +x devoir.py
Copier le fichier devoir.ods
dans un répertoire « stable » puis renseigner dans le fichier devoir.py
sa localisation, par exemple :
feuille = /home/$(whoami)/bin/devoir.ods
Modifier la matière par défaut (paramètre matiere
), les classes (paramètre classes
) ou les abréviations définies par défaut (dictionnaire short
) selon vos besoins.
Par défaut, la matière des devoirs est définie ligne 46 comme :
matiere = "Sciences industrielles de l'ingénieur"
Vous pouvez évidemment la modifier selon vos souhaits. Sont pour l’instant définies les matières :
short={
"Sciences industrielles de l'ingénieur": "SII",
"Informatique commune": "Info",
"Mathématiques": "Maths",
"Physique-Chimie": "PC",
}
où les valeurs dans le dictionnaire sont les diminutifs des noms complets donnés en clés. Les clés servent au titre du rapport, et les diminutifs aux noms de fichiers.
Les types sont renseignés ligne 48 :
typesEval = ["DS", "DM", "I"]
Outre le titre des rapports, ils permettent de moduler le recalage des notes dans le cas d’un DS.
Copier le fichier devoir.ods
dans le répertoire courant
avec le nom <classe>-<typeEVal><num>.ods
:
$ devoir.py -f -c <classe> -t <typeEval> -n <num>
par exemple :
$ devoir.py -f -c PCSI -t DS -n 2
ou en spécifiant directement le nom de fichier
$ devoir.py -f -o PCSI-DS2.ods
par défaut
$ devoir.py -f
copie simplement le fichier devoir.ods
dans le répertoire courant avec le même nom.
Modifier le champ A1
selon que vous corrigez un DS
ou un DM
. Dans le cas d’un DM on se satisfait de notes brutes alors que pour un DS on les ajustera avec une formule du type où est la note brute, la note modifiée et avec la moyenne et l’écart-type des notes brutes, et et des estimateurs raisonnables de la moyenne et de l’écart-type de la distribution de notes désirée.
Saisissez les questions par partie et le barème ;
Copier les noms et prénoms de vos élèves dans les colonnes A
et B
. Par défaut, le fichier est calibré pour une classe de 48 élèves.
Générer pour chacun un identifiant personnel, par exemple un nombre entier compris entre 100 et 300 avec ring
$ ring 48 100 300 > codes.csv
ou RandomPrime
$ RandomPrime 48 100 300 > codes.csv
et les ajouter à la colonne C
;
Exécuter le script devoir.py
pour initialiser le rapport
$ devoir.py -i <classe>-<typeEVal><num>.ods
qui génèrera un rapport pour la matière définie par défaut (variable matiere
ligne 46, voir la section configuration) ou, si la matière n’est pas celle par défaut :
$ devoir.py -i <classe>-<typeEVal><num>.ods -m <matiere>
Si <matiere>
est parmis la liste des diminutifs donnés en clés du dictionnaire short
:
short={
"Sciences industrielles de l'ingénieur": "SII",
"Informatique commune": "Info",
"Mathématiques": "Maths",
"Physique-Chimie": "PC",
}
alors le fichier du rapport sera nommé :
<matiere>-<classe>-<typeEVal><num>_rapport.md
sinon il sera nommé :
short[<matiere>]-<classe>-<typeEVal><num>_rapport.md
par exemples :
$ devoir.py -i DS3.ods -m PC
PC-DS3_rapport.md
;$ devoir.py -i DM4.ods -m Info
Info-DM4_rapport.md
;$ devoir.py -i DS5.ods -m Mathématiques -c PTSI
Maths-PTSI-DS5_rapport.md
.Dans tous les cas, on peut initialiser un rapport de façon complètement générique :
devoir.py -i <file.ods> -m <matiere> -c <classe> -t <typeEval> -n <num>
Corriger les copies en attribuant à chaque question traitée une note en points entiers entre 0 et 5 (pour éviter toute demie-mesure), son poids étant donné par le barème. Rédiger simultanément le rapport d’épreuve pour capitaliser les erreurs vues, etc. Hélas, je n’ai pas encore de script pour cela…
Ajuster les paramètres (cellule AE11
du fichier devoir.ods
) et (cellule AE12
) pour obtenir l’ajustement des notes (au besoin s’appuyer sur les extrema et l’allure de la bijection).
Une fois que les notes satisfont aux critères de votre évaluation, figez les valeurs en copiant les valeurs des cellules AE15
et AE16
respectivement vers celles des cellules AF15
et AF16
, puis faire pointer les cellules AD15
et AD16
respectivement vers ces dernières (par défaut elles pointent vers les valeurs calculées, cellules AE15
et AE16
). C’est une méthode archaïque, mais elle évite de modifier toutes les notes finales en cas d’erreur d’évaluation d’une copie.
Exécuter le script devoir.py
pour ajouter les statistiques du devoir au rapport
$ devoir.py -s <classe>-<typeEVal><num>.ods
ou, si la matière n’est pas celle par défaut :
$ devoir.py -s <classe>-<typeEVal><num>.ods -m <matiere>
ou de façon complètement générique :
$ devoir.py -i <file.ods> -m <matiere> -c <classe> -t <typeEval> -n <num>
Créer un fichier anonymé en omettant les noms et prénoms, puis le trier par identifiants croissants.