0% ont trouvé ce document utile (0 vote)
26 vues20 pages

Utilisation d'AMC avec LaTeX pour QCM

Transféré par

harpe.orgue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues20 pages

Utilisation d'AMC avec LaTeX pour QCM

Transféré par

harpe.orgue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Un usage d’AMC∗avec Latex

S. PERSYN
21 août 2023

1 Introduction
Ce document n’est pas un « document officiel » ou un « How-to » et n’a surtout pas la prétention de remplacer les
nombreuses ressources ¹ déjà disponibles sur internet. Je souhaite dans un premier temps me constituer mon propre
« mémo » afin de mettre en ordre et de ne pas oublier les nombreuses manipulations effectuées pour parvenir à un
résultat qui, aujourd’hui, me satisfait. Et si dans un deuxième temps, ces notes peuvent aider d’autres collègues, alors
le plaisir n’en sera que plus important !
L’objectif est de décrire mon appropriation d’AMC (AutoMultipleChoice), développé par l’imminent Alexis Bienvenüe,
agrégé de mathématiques et enseignant-chercheur à l’ISFA de Lyon (Oh Gloire à lui ! )
Ce programme permet de réaliser des évaluations type ”QCM” avec notation et correction automatique, récupération
de compétences et/ou capacités évaluées dans un tableur.
Je ne peux que trop vous conseiller d’éplucher la documentation officielle :
[Link] se trouvant sur le site https://
[Link]/[Link] sur lequel vous trouverez aussi sans doute des élèments de réponse (no-
tamment pour l’installation par exemple ...)
A noter également un « wiki » sur lequel on retrouve également de nombreuses contributions : [Link]
[Link]/projects/auto-multiple-choice/wiki/index
Merci à Frédéric Bréal et Benjamin Abel pour leur activité et réactivité sur ce dernier.
Seul petit regret : AMC ne semble plus trop développé depuis quelques années, sans doute par faute de temps de
l’auteur. On imagine en effet assez facilement l’ampleur que peut prendre un tel projet ! Il y aurait certaines « petites
améliorations » à apporter (concernant les mises en page par exemple) mais dans l’ensemble, le tout donne largement
satisfaction !

2 Procédure « simplifiée »
En résumé, voici les différentes étapes que je réalise pour mes évaluations :
1) Concevoir le questionnement (au format LATEX me concernant) ;
2) Faire passer l’évaluation aux élèves. Ici, deux possibilités :
a. distribuer nominativement les sujets ;
b. ou distribuer les sujets « anonymés » et ce sont alors les élèves qui identifient leur sujet ;
3) Récupérer les copies et les scanner (à l’aide d’un duplicopieur qui fait aussi scanner pour ma part) ;
4) Faire corriger les scans récupérés au format « .pdf » par AMC : il détecte les cases cochées, attribue les points suivant
le barème prévu et établit la note /20 (ou autre d’ailleurs...) ;
5) On exporte depuis AMC un tableau « OpenOffice » contenant, pour chaque élève, les notes à chaque question. Cela
permet, par exemple, de récupérer certains élèments pour réaliser un suivi ou une évaluation par compétences ;
6) On dépose les copies numérisées et annotées (pdf) dans un espace accessible depuis le net ou par mail à chaque
élève ;
7) On dépose également le (ou les) corrigés du (des) sujet(s) ;
8) On restitue le sujet à chacun des élèves. Ce sujet ne comporte aucune annotation (on peut éventuellement y reporter
la note si ça choque au départ) mais il contient surtout le (les) QRcode(s) permettant l’accès à la copie annotée et au
corrigé ;

Auto Multiple Choice est un ensemble d’utilitaires permettant de créer, gérer et corriger automatiquement des questionnaires à choix multiples
(QCM). C’est un logiciel libre distribué sous la licence GPLv2+.
1. Ressources dont je me suis d’ailleurs très largement inspirées !

1
3 Conception du questionnaire
Je rédige en LATEX et j’utilise les dernières mises à jour de tous les packages à la date de rédaction de ce document. Je
compile en LuaLATEX et j’utilise Python (notamment Pythontex) pour générer des questions à valeurs aléatoires (entre
autres).
Je précise également que je travaille dans un environnement « MAC », ce qui peut induire certaines particularités ...
Je suppose que tout est bien installé et fonctionne correctement. Je ne précise ici que les « particularités » liées à MON
expérience.
Bien entendu, je suis loin d’avoir fait le tour de toutes les possibilités mais voici un document qui fonctionne pour moi
et dont je me sers comme modèle.
Je ne m’étends pas sur le préambule, il sera certainement à personnaliser en fonction de chacun. Cependant, pour ceux
qui souhaitent démarrer rapidement, je fournis tous les fichiers (Section 5) et j’autorise évidemment leur utilisation
et diffusion en masse ! :- )

3.1 Sujet « nominatif »


Edit : j’ai abandonné cette procédure mais je laisse ma description pour ceux que cela intéresse. J’utilise désormais exclusivement
l’utilisation de sujet anonyme (c’est finalement plus simple) (voir section 3.2 )
On va réaliser un questionnaire nominatif, c’est-à-dire pour lequel nom et prénom de l’élève seront préalablement
inscrits sur le sujet. L’inconvénient de cette procédure est qu’elle nécessite sans doute un temps de disctribution plus
important, à moins d’établir un plan de classe dans l’ordre aphabétique ou de bien connaître ses élèves !
Tout d’abord, on démarre « AMC ». Pour ma part, dans un terminal, j’exécute la commande :

Terminal MacOSX

[test@server]$ auto-multiple-choice

On obtient alors l’interface gra- On crée un nouveau projet . On saisit On choisit l’option « Fichier » 3 puis
phique d’AMC. On clique sur ” Open un nom 1 et on clique sur « Créer un on clique sur « Forward » 4 :
”: projet » 2 :

On sélectionne alors le fichier (pour Voici le dossier créé par AMC avec la Je copie alors, dans ce répertoire,
ma part « [Link] ») qui me sert de copie du fichier « modèle » [Link] : trois fichiers qui seront nécessaires :
modèle.

v Le fichier prepPythonTex4AMC est un fichier utile si vous utilisez Python pour la conception ;
v Le fichier script_Copies_Corrigees.py est un script Python qui permet la concaténation de la copie de l’élève avec
son corrigé personnalisé (étape spécifique aux sujets nominatifs et un peu ... lourde).
v Le plus important ! Le fichier « .csv » (que j’ai appelé ici [Link]) est le fichier contenant la liste des élèves et à partir
duquel les sujets seront créés.

2
Voici exacement de quoi est constitué mon fichier csv (en- La première ligne est la ligne de nom des champs :
fin, celui de test ...) : v id : un numéro d’identification unique pour chaque
élève que j’ai créé et qui me permet d’identifier à coup
Code LT X
A sûr efficacement chaque élève ;
E
id,nom,prenom,mdp,code
T1232401,Abel,Niels,ANT1232401,301
v nom et prenom : obligatoire !
T1232402,Al-Kwarizmi,Abu,AAT1232402,302 v mdp : un autre code unique pour chaque élève ;
T1232403,Al-Tusi,Sharaf,AST1232403,303
T1232404,Bernoulli,Daniel,BDT1232404,304 v code : sera utile pour les sujets anonymes et qui de-
T1232405,Bernoulli,Jacques,BJT1232405,305 vront être identifiés par chaque élève avec ce code (plus
simple), là aussi unique pour chaque élève.

On retourne sur l’interface graphique d’AMC et on clique Comme je l’ai déjà indiqué, je ne m’attarde pas sur le pré-
sur « Éditer le fichier source » : ambule et ses paramètres...
Notez cependant les trois lignes nécessaires au bon fonc-
tionnement (je crois ...) de Python avec AMC au tout dé-
but du fichier :
Code LATEX
%%AMC:preprocess_command=prePythonTex4AMC
%%AMC:jobspecific=1
%%AMC:latex_engine=lualatex --shell-escape
\documentclass[french,a4paper,10pt]{article}

Le logiciel d’édition Tex démarre (TexStudio pour moi) et


on peut commencer à saisir ses questions.

Le corps du document LATEX ne contient qu’une ligne et se situe à la toute fin du fichier :
Code LATEX On demande de lire le fichier .csv passé en argument par
\begin{document}
\csvreader[head to column names]{\Liste}{}{\sujet}
la commande \Liste et pour chacune des entrées de ce
\end{document} fichier, on exécute la macro \sujet créée plus haut.

Dans le préambule du fichier se trouve quelques déclarations qui serviront lors de la création de l’en-tête ou encore
du nom de fichier.
Code LATEX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Identifiant}{TESTQCMNOMI} % Identifiant du fichier A CHANGER A CHAQUE EVAL
\newcommand{\Classe}{Terminale} %Classe concernée A CHANGER A CHAQUE EVAL (facultatif)
\newcommand{\Date}{septembre 2023} % Date prévisible du QCM A CHANGER
\newcommand{\Liste}{[Link]} % Liste d'élèves concernés A CHANGER A CHAQUE EVAL (facultatif)
\newcommand{\Dossier}{QCMTEST} % Identifiant sous rep sur serveur ftp A CHANGER A CHAQUE EVAL
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

C’est ici que \Liste est déclarée et doit correspondre au fichier .csv copié précédemment dans le repertoire.

3
Voyons maintenant la macro \sujet :
Code LATEX
\newcommand{\sujet} % Création d'une macro sujet pour usage avec une liste eleves au format csv
{
\AMCassociation{\id} %% On utilise le champ "id" du fichier csv pour identifier chaque élève
\onecopy{1}{ % On laisse ce paramètre à une copie car c'est la lecture du .csv qui s'occupe de générer la
quantité suffisante de sujets.
\newcommand{\chemincopie}{[Link]
%%% debut de l'en-tête des copies :
\vspace*{.2cm}
\begin{center}
\large\bf Terminale - Spécialité Mathématiques - QCM 01 \hfill
\qrcode[link,height=1.5cm]{\chemincopie}
\end{center}
\champnom{\begin{minipage}{\linewidth}
\vspace{0.5cm}

\textsc{\textbf{\color{blue} \large Nom :} \nom \hfill \textbf{\color{blue} Prénom :} \prenom \hfill


\textbf{\color{blue} Classe :} \Classe \hfill \textbf{\color{blue} Date :} \Date}
\end{minipage}
}
\begin{center}
\normalsize
\textbf{́Duree : 5 minutes.}

\textbf{\underline{\textsc{’Lusage de la calculatrice est interdit.}}}

Les questions faisant ̂apparaitre le symbole \multiSymbole{} peuvent ́presenter une ou plusieurs bonnes
́reponses. Les autres ont une unique bonne ́reponse.
\end{center}

et on obtient, après compilation, l’en-tête suivant :

Revenons sur la commande :


Code LATEX
\newcommand{\chemincopie}{[Link]

Bien entendu, le chemin d’accès au fichier pdf et le nom de ce fichier va dépendre de chacun. Il est à noté que le nom
de fichier est obtenu à partir des champs du .csv, ce que permettra également AMC au moment de l’exportation des
copies. Ainsi, on fait concorder les noms afin que l’url générée au préalable soit la bonne !
Nous allons voir plus loin comment n’obtenir qu’un seul fichier pdf (copie annotée + corrigé) à l’aide du script Python
script_Copies_Corrigees.py.

4
Voyons maintenant les questions.
On les regroupe par « thème » (ou niveau de difficulté par exemple) en les plaçant dans un environnement \element{nom}{...}.
Code LATEX
\element{suites}{
\pyc{valeur=[Link](-6,9)} % Python est employé pour générer un entier entre -6 et 9
\pyc{rang=[Link](2,6)} % même chose
\pyc{while(valeur==0 or valeur ==-1 or valeur ==1) : valeur=[Link](-6,9)} % pour obtenir des valeurs
différentes de -1, 0 et 1
\begin{question}{003-01}\baremeSimple \textit{(1 point)}
Soit $(u_n)$ est une suite numérique définie sur $\N$ par $u_n = \pyc{print(valeur)}n^2 + 2$.

Le terme $u_{\pyc{print(rang)}}$ est égale à :

\begin{reponseshoriz}
\bonne{$\py{valeur *(rang *rang) +2}$}
\mauvaise{$\py{(valeur*rang)*(valeur*rang) +2}$}
\mauvaise{$\py{valeur *(rang *rang) -2}$}
\mauvaise{$\py{(10*valeur +rang)*(10*valeur +rang) +2}$}
\end{reponseshoriz}
\explain{\color{red} On remplace $n$ par $\pyc{print(rang)}$ dans l'expression de $u_n$ soit ici
$u_{\pyc{print(rang)}} = \pyc{print(valeur)} \times \pyc{print(rang)}^2 +2 = \boxed{\py{valeur * rang *
rang +2}}$}
\end{question}
}

et on obtient :

ou bien :

En fait, sur chaque sujet créé, les valeurs sont aléatoires et générées en Python ! L’ordes des réponses (et de la bonne)
l’est également : on évite ainsi toute triche par recopie de la même case cochée que son voisin !
Revenons sur cette ligne de code :
Code LATEX
\begin{question}{003-01}\baremeSimple \textit{(1 point)}

La commande \baremeSimple est définie dans mon fichier de déclaration [Link].


Par contre, ce qui est très important (enfin, pour moi) c’est l’identifiant unique de la question {003-01} .
En fait, ce code est celui d’une capacité que j’évalue. C’est grâce à ce code qu’on peut ensuite réupérer le résultat de
l’élève sur cette capacité et qu’on peut créer un tableau récapitulatif (voir plus loin).
Il faut donc, si on veut se servir de cette option, avoir réfléchi au préalable sur les compétences/capacités à évaluer et
y associer des codes.
Par exemple, pour moi, voici une partie des numéros que j’ai attribués à certaines capacités (niveau Terminale Spé) :

On voit que, pour moi, {003} ça concerne des prérequis sur les suites. Mais je précice tout cela dans la présentation
des fichiers « tableur » (voir section 4).

5
Je laisse découvrir les autres questions de ce sujet test.
Notons maintenant la fin de la macro \sujet déjà vue précédemment :
Code LATEX
\setgroupmode{suites}{cyclic} %% permet de conserver l'ordre des questions pour le groupe de questions sur les
suites
\restituegroupe{suites}

\restituegroupe{suitesgraph} %% par contre, les questions de ce groupe sont générées dans un ordre aléatoire
sur les sujets.

Dans le sujet en exemple, il n’y a qu’une seule question dans le groupe {suitesgraph} donc le mélange aléatoire n’est
pas utile ...
Remarque : ici je me suis arrangé pour avoir un sujet tenant sur une seule page.
On peut compiler le fichier LATEX directement depuis son logiciel d’édition habituel pour contrôler que cela fonctionne
au niveau du code mais il faut passer par l’interface d’AMC pour générer les copies.
On retourne donc sur l’interface graphique d’AMC :

On clique sur « Mettre à jour les documents » en laissant le Dans le dossier créé par AMC, se trouve alors ces fichiers :
nombre de copies à 0 (c’est grâce au fichier csv et à la ma-
cro \sujet qu’on obtient le bon nombre d’exemplaires) :

v Le fichier « [Link] » est le document contenant


tous les exemplaires à distribuer. C’est donc ce docu-
ment qu’il faut imprimer.
v Les fichiers « [Link] » et « DOC-indiv-
[Link] » sont les corrigés de chaque exemplaire.
Ces deux documents sont identiques à l’exception que
Á ce stade, on prie pour qu’il n’y ai pas d’erreur ! Le cas « [Link] » possède encore l’identifica-
échéant, AMC n’ira pas plus loin. Il faudra donc éplucher tion du sujet (numéro, code-barre). Personnellement,
les logs et réussir à se débloquer ... c’est ce document de corrigé que j’utilise.

Je n’ai pas mis en place de production dans le mode « ensemble » qui permet d’obtenir un document réponse regroupant
toutes les cases à cocher rassemblées en fin de copie (cette option est en général utilisée quand on veut limiter les
impressions).
Á ce stade, on imprime donc les sujets et on les distribue de manière nominative à chaque élève.
Une fois l’évaluation effectuée par les élèves, on ramasse les feuilles.
Je dispose, dans mon établissement ², d’un duplicopieur disposant d’un mode ”scanner” qui me permet de numériser
un lot de pages très rapidement et d’en obtenir un document pdf. Je mets tous les sujets (y compris ceux des absents
éventuels ³) dans le chargeur de feuilles et la numérisation est très rapide (j’ai cette chance ...).
On récupère le document pdf sur un clé ou via le réseau de l’établissement.

On relance l’interface AMC en ou- On clique sur « Calculer les mises en On clique sur « Automatique » :
vrant le projet correspondant à cette page » 5 puis sur « Saisie » 6 :
évaluation :

ATTENTION ! Á l’étape précédente,


on ne reclique SURTOUT PAS sur
« Mettre à jour les documents » !

2. mais je pense maintenant dans la plupart des établissements ...


3. Nécessaire à la fusion des copies annotées et des corrigés....voir plus loin

6
On sélectionne le fichier pdf contenant les copies scannées 7 . On coche l’option « Copier les scans dans le répertoire
projet » 8 et on sélectionne « Copies toutes différentes » 9

L’examen des copies commence. AMC cale les feuilles (grâce aux repères placés dans les coins) et détecte les cases
cochées. Quand il y a des diagnostics rouges à ce stade c’est qu’il y a des incertitudes (cases mal cochées par exemple).
On peut vérifier tout cela depuis l’interface.
Une fois que tout est ok on passe à l’onglet « Notation » et on clique sur « Corriger » :

AMC va alors lire les barèmes appliqués à chaque question et va attribuer les points et faire le calcul de la note finale
pour chaque copie.
Il faut maintenant que chacune de ces copies soit attribuée au bon élève. Puisqu’ici les sujets étaient nominatifs, cela
pose moins de problème d’identification mais il faut tout de même qu’AMC crée la bonne association « élève <->
copie » pour exporter convenablement les rapports et les copies annotées par la suite.
Dans la zone « Identification des étudiants », voici les paramètres que je sélectionne en accord avec mes sujets :

v 10 : on sélectionne le fichier csv qui a servi à la publication des sujets ;


v 11 : je sélectionne le champ ”id” comme identifiant unique (champ présent dans mon fichier .csv) ;
v 12 : on sélectionne ”Pré-association” ;
v 13 : et on clique sur « Automatique ».
L’option 12 ”Pré-association” est possible grâce à la ligne suivante du document .tex :
Code LATEX
\AMCassociation{\id}

Á ce stade, il manque toujours l’identification de la première copie. Cela semble être un bug remonté mais non encore
résolu. Il faut alors cliquer sur « Manuelle » pour réaliser cette association à la main :

Il suffit de bien vérifier l’étiquette du nom détecté comme non associée et de cliquer sur le seul élève correspondant
pour effectuer la correspondance puis de cliquer sur « Quit ». C’est donc un « bug » qui se corrige très rapidement !

7
On se rend maintenant dans l’onglet « Rapports » :

On va exporter les notes des élèves dans un tableaur « Openoffice ». On clique sur « Exporter » avec les options pré-
sentées ci-dessus.
Voici le début du tableau obtenu :

Bien entendu, on récupère les notes sur 20 mais on va aussi récupérer les notes obtenues pour chacune des ques-
tions afin de réaliser un suivi de l’élève au niveau de ses capacités, ce qui peut déboucher sur une évaluation par
compétences. J’aborde tout cela plus loin (voir section 4.)
La partie « Copies corrigées » va permettre de créer les copies annotées pour chacun des élèves.
Il faut que le nom de fichier corresponde à la syntaxe donnée dans le fichier .tex pour la création du QRcode.
Pour mémoire, dans le fichier .tex, on a :
Code LATEX
\newcommand{\chemincopie}{[Link]

Le nom du fichier .pdf à générer doit ⁴ donc être de la forme Identifiant-nom_prenom_mdp.pdf. On peut visualiser
cette syntaxe par exemple en plaçant la souris sur le QRcode d’un élève :

Voici alors les paramètres saisis :

Bien faire attention à la syntaxe entourée en rouge ! Mais si on se trompe, on peut de toute façon recommencer le
processus jusqu’à obtenir le format de nom de fichier désiré ou alors il faudra renommer les fichiers correctement
d’une autre manière ...

4. C’est MA façon de nommer les fichiers

8
On clique alors sur « Annoter les copies ».
On retrouve alors, dans le sous-répertoire cr/corrections/pdf les copies annotées par élève
Voici un aperçu du contenu de ce dossier :

voici un aperçu d’une des copies annotées :

Ici, l’élève a obtenu 3/5 (ramené à 12/20). Il a juste à la question 1 et faux aux deux questions suivantes par exemple.

9
Les corrigés
Dans le document source .tex, on peut corriger chacune des questions. Il suffit pour cela de placer le corrigé dans une
macro \explain{ ... }.
Attention, ces macros doivent être insérées dans un environnement « question » d’AMC.
Par exemple, pour la question 1 de ce sujet, on a écrit :
Code LATEX
\element{suites}{
[...]
\begin{question}{003-01}[...]
\begin{reponseshoriz}
[..]
\end{reponseshoriz}
\explain{\color{red} On remplace $n$ par $\pyc{print(rang)}$ dans l'expression de $u_n$ soit ici
$u_{\pyc{print(rang)}} = \pyc{print(valeur)} \times \pyc{print(rang)}^2 +2 = \boxed{\py{valeur * rang *
rang +2}}$}
\end{question}

Le corrigé s’adapte à la question en reprenant les variables aléatoires générées pour celle-ci.
Ainsi, le corrigé est personnalisé et bien entendu correspond à la question.
Voici le rendu sur le corrigé (fichier « [Link] ») :

La fusion copie annotée et corrigé individuel


Le petit manque d’AMC ici est de ne pas permettre l’intégration de ces corrigés directement dans la copie annotée.
On a donc la copie annotée d’une part (sans aucun élèment de correction) et le corrigé commenté d’autre part.
Afin de ne transmettre qu’un seul fichier (et donc un seul QRcode) à l’élève, on peut vouloir fusionner ces deux
fichiers. Cela est rendu possible avec un petit script Python et le logiciel « pdftk ».
J’ai adapté ici le script Python donné par Fabrice Arnaud (merci à lui) sur cette page :
[Link]
Le script est nommé (par mes soins) « script_Copies_Corrigees.py » :
Petit défaut : l’ajout de corrigé avec la macro \explain{ ... } crée malheureusement, parfois, des décalages dans les
mises en pages.
Comme les questions (pour ce sujet) sont en plus générées dans un ordre aléatoire, on n’obtient jamais réellement la
même mise en page pour les diffférents corrigés.
Or, le script Python va créer un corrigé par élève à partir du fichier « [Link] » qui contient tous les
corrigés en se basant sur le nombre de pages.
Si le document contient 80 pages et qu’il y a 40 élèves, on en déduit qu’il y a 2 pages de corrigé par élève. Mais il peut
arriver, à cause des décalages de mise en page, qu’un corrigé passe sur 3 pages au lieu de 2 et on se retrouve alors
avec, par exemple, 81 pages et là le découpage est problématique ⁵.
Cette solution n’est donc réellement possible que s’il y a le même nombre de pages pour chacun des corrigés.
De plus, il est nécessaire d’avoir exactement le même nombre de copies scannées que de sujets élaborés.
Il faut donc scanner toutes les copies, y compris les copies des absents.
Le script Python va créer un répertoire « temp » de travail, va y copier toutes copies annotées et le fichier « DOC-indiv-
[Link] »
On copie ce script dans le répertoire courant du projet AMC.
Il faut aussi intaller préalablement le logiciel « pdftk » : [Link]
Ce logiciel permet la manipulation de fichiers « .pdf » comme la fusion, l’extraction de pages ou encore l’ajout d’un
mot de passe pour la lecture.

5. Ma réflexion a évolué suite à cette expérience et j’ai décidé de ne plus réaliser cette étape de fusion des deux documents. Je fourni alors aux
élèves deux QRcodes : un vers la copie annotée et un vers le document « [Link] » qui contient l’intégralité des corrigés. Alors, oui,
c’est un peu plus contraignant pour l’élève qui doit aller « à la pêche » de son corrigé dans le document. Cependant, cela présente aussi l’intérêt
pour lui de voir les autres questions et corrigés et de s’entrainer !

10
Sur mon Mac, le script s’appelle de cette manière (en se plaçant auparavant, en ligne de commande, dans le répertoire
du projet) :

Terminal MacOSX

[... home]$ cd /Users/spersyn/Documents/Tex/amc/Modeles/AMCTutoNomi/

[... AMCTutoNomi]$ Python script_Copies_Corrigees.py /Users/spersyn/Documents/Tex/amc/Modeles/AMCTutoNomi/

L’argument de ce script est le chemin du dossier AMC, ici pour moi


/Users/spersyn/Documents/Tex/amc/Modeles/AMCTutoNomi/
Lorsque le script est terminé, dans le dossier AMC a été créé un sous-dossier nommé Copies_Corrigees et dans lequel
on retrouve très exactement les mêmes fichiers « .pdf » que dans le dossier des copies annotées
cr/corrections/pdf mais désormais le corrigé individualisé a été ajouté à la suite de la copie annotée !
Comme les noms de fichiers ont été correctement formatés en concordance avec le QRcode, il ne reste plus qu’à déposer
tous ces « .pdf » (ceux du dossier Copies_Corrigees) dans l’espace en ligne prévu à cet effet au préalable (pour moi,
sur un espace web des pages perso de free dans un sous-dossier dédié à cette évaluation. )

On restitue les sujets à chacun des élèves (qui ne sont pas annotés, on peut y voir une limite sur le plan pédagogique
...) afin qu’ils puissent scanner leur QRcode pour accéder ainsi à leur copie annotée et au corrigé associé.

11
3.2 Sujet « anonyme »
Je présente ici une deuxième option pour la réalisation du sujet et qui facilite sa distribution : l’anonymat des sujets.
Pour cette solution, les sujets ne sont donc pas « nominatifs ». L’en-tête du sujet contient alors une « grille » permettant
à chaque élève de coder un nombre qui lui est propre. C’est avec ce code qu’AMC pourra ensuite identifier l’élève et
la copie.
La différence va se trouver dans la macro \sujet et notamment la création de l’en-tête de la copie :
Code LATEX
\newcommand{\sujet} % Création d'une macro sujet pour usage avec une liste eleves au format csv
{
\onecopy{1}{
\newcommand{\chemincorrige}{[Link]

\pyc{numsuj = str(\AMCStudentNumber).zfill(4)} %% on ajouter des 0 non significatifs à gauche pour


concorder avec la numérotation AMC
\pyc{chem = "[Link] + numsuj + ".pdf"}

\newcommand{\chemincopie}{\py{chem}}

%%% debut de l'en-tête des copies :


\begin{minipage}[t]{0.15\textwidth}
\vspace{0cm}
\begin{center}
Codez votre code élève ci-dessous

\AMCcodeGridInt{code}{3}
\end{center}
\end{minipage} \hfill \begin{minipage}[t]{0.8\textwidth}
\vspace{0cm}
\begin{center}
\LARGE \textsc{\textbf{\'Evaluation 1 - QCM}} \normalsize %%%% MODIFIER le numéro de l'évaluation
\end{center}
\champnom{\fbox{
\begin{minipage}{.9\linewidth}
\vspace{0.5cm}

NOM - PR\'ENOM : \dotfill

\vspace{0.5cm}

\end{minipage} }}
\begin{minipage}{0.8\textwidth}
\begin{center}
\normalsize
\textbf{́Duree : 10 minutes.}

\textbf{Aucun document ’nest ́autorise.}

\textbf{\underline{\textsc{’Lusage de la calculatrice est interdit.}}}

Les questions faisant ̂apparaitre le symbole \multiSymbole{} peuvent ́presenter plusieurs bonnes
́reponses. Les autres ont une unique bonne ́reponse.
Pour certaines questions, des points ́negatifs pourront ̂etre ́affectes ̀a de \og ̀tres
mauvaises \fg{} ́reponses !
\end{center}\end{minipage} \hfill \begin{minipage}{0.15\textwidth}
\begin{center}
\qrcode[link,height=1.5cm]{\chemincopie}

Accès copie corrigée

\qrcode[link,height=1.5cm]{\chemincorrige}

Accès corrigé
\end{center}
\end{minipage}
\end{minipage}
%%% fin de l'en-tête

12
D’une part, il y aura cette fois 2 QRcodes :
v un pour l’accès à la copie annotée : on utilisera pour ce faire le numéro de sujet dans l’appellation du nom du fichier
« .pdf » ;
v un pour l’accès au fichier de corrigés : ici, l’élève aura accès à l’ensemble des corrigées.
Comme le sujet est anonymé au départ, il n’est pas possible, comme dans la méthode précédente, de coder le QRcode
avec le nom et prénom de l’élève par exemple.
Voici un aperçu d’un tel en-tête :

Et d’autre part, grâce à cette ligne :


Code LATEX
\AMCcodeGridInt{code}{3}

on place une grille à 3 chiffres (pour moi) dans l’en-tête. La valeur décodée par AMC sera stockée dans la variable
« code ».
Il faut alors que le fichier .csv contient un tel champ :
Code LATEX
id,nom,prenom,mdp,code
T1232401,Abel,Niels,ANT1232401,301
T1232402,Al-Kwarizmi,Abu,AAT1232402,302
T1232403,Al-Tusi,Sharaf,AST1232403,303
T1232404,Bernoulli,Daniel,BDT1232404,304
T1232405,Bernoulli,Jacques,BJT1232405,305

Il faut attribuer à chacun des élèves un code à 3 chiffres unique : ici, l’élève Abel Niels possède le code 301 alors que
Bernoulli Daniel a le code 304 (oui, je sais, j’ai des élèves intéressants cette année ...).
C’est ce code qu’il faut communiquer aux élèves pour l’année et qu’ils devront coder systématiquement en cochant
les bonnes cases.
On ajoute un champ libre « Nom prénom » afin que l’élève puisse inscrire ses informations. Cet espace réservé sera
lu par AMC et permettra d’identifier visuellement les copies en cas de non association ou de problèmes de scan. Cela
permet aussi de restituer facilement la copie à l’élève !
On crée le questionnaire comme précédemment (voir mon fichier source_ano.tex)
Ici, il n’est pas nécessaire de scanner tous les sujets (sujets non distribués). On ne scanne donc que les sujets ef-
fectivemment traités par les élèves.
Depuis l’interface graphique d’AMC, toutes les étapes sont presque les mêmes que pour la section 3.1

13
L’étape d’identification des étudiants change. Il faut ici choisir « code » pour l’identification et le titre du code pour
association automatique.

Ensuite, pour l’exportation au format « Openoffice » et afin que le formatage soit compatible avec mon extraction de
données pour l’évaluation par compétences, je choisi « Tri : par nom » et dans « Choix des colonnes », je sélectionne
les champs « numéro de copie » , « id » et « nom complet » ordonnés comme ci-dessous :

Je ne coche pas « inclure les absents ». On obtient un tableau comme celui-ci :

Pour l’extraction des données avec la macro que j’ai créée, il est important que les colonnes soient dans cet ordre : id
(en colonne B) et nom prenom (en colonne C) et que les notes de la première question commencent en colonne G.

14
Pour fournir la copie annotée au bon élève, il faut que le nom du fichier .pdf corresponde au codage de son QRcode
qui est obtenu par ces lignes dans le doc .tex :
Code LATEX
\pyc{numsuj = str(\AMCStudentNumber).zfill(4)} %% on ajouter des 0 non significatifs à gauche pour concorder
avec la numérotation AMC
\pyc{chem = "[Link] + numsuj + ".pdf"}

\newcommand{\chemincopie}{\py{chem}}

J’utilise Python pour ajouter des 0 non significatifs au numéro de sujet car AMC fourni des numéros sur 4 chiffres,
soit 0001 pour le sujet 1 par exemple alors que la variable \AMCStudentNumber ne donne pas les 0 non significatifs.
Ensuite je crée la chaine de caractères donnant l’url d’accès à la copie annotée. Le fichier .pdf doit porter le nom
\identifiant_Sujet0001.pdf pour le sujet 1 où \identifiant est la variable créée dans l’en-tête du fichier .tex :
Code LATEX
\newcommand{\Identifiant}{SEC1QCM01} % Identifiant du fichier A CHANGER A CHAQUE EVAL

Ici j’ai appelé SEC1QCM01 le nom de mon premier QCM donné à la seconde 1.
Donc, voici le format du fichier à renseigner dans la partie « Copies corrigées » :

On obtient ainsi les copies annotées correctement formatées au niveau de leurs noms toujours dans le dossier
cr/corrections/pdf

Il ne reste plus qu’à déposer ces pdf dans l’espace web dédié. Pour ma part, ici, dans un sous dossier intitulé

/2GT01/QCMTESTSEC/.
On peut aussi mettre à disposition, à l’aide du deuxième QRcode intégré au sujet, l’accès au fichier corrigé. Contrai-
rement à la méthode précédente, je donne ici accès au même fichier de corrigé à tous les élèves. Le fichier contient en
effet tous les corrigés de tous les sujets et c’est à l’élève d’y retrouver son corrigé. Mais il peut aussi en profiter pour
regarder les autres sujets, ce qui, pédagogiquement, n’est pas si mal !
On renomme alors le fichier [Link] en fonction de ce qu’on a donné dans le fichier .tex.
Ici, pour ma part et pour cette évaluation, ce sera Corrige_SEC1QCM01.pdf. Puis on dépose ce document dans le même
espace web dédié à cette évaluation.
Comme je l’ai déjà dit plus haut, je pense pratiquer ainsi pour le fichier corrigé quelque soit la méthode (sujet anonyme
ou nominatif) car cela facilite la manipulation et a un intérêt pédagogique !

15
4 Évaluation par « compétences »
Voici une étape légèrement « déconnectée » d’AMC mais j’ai saisi l’opportunité qu’offre AMC pour ce faire.
J’ai mis en place une procédure sur « Openoffice Calc » avec une macro Visual Basic qui permet de récupérer les notes
pour chaque item pour chaque élève et qui va copier le tout dans un tableau de « suivi » sur l’ensemble des évaluations.

Par exemple, le fichier utilisé s’appelle, pour ma classe de terminale, Suivi_Cap_Term.ods


Voici comment j’ai formaté ce fichier.

Il contient (au moins) deux premiers onglets qui s’intitulent Notes et SuiviCap
Si vous voulez utiliser ma macro, il faut respecter ces syntaxes.
L’onglet Notes sert de tableau « tampon » dans lequel on va coller les cellules récupérées de l’exportation AMC afin
de les traiter et les insérer dans l’onglet SuiviCap.
Je ne suis pas un expert en programmation et il y a sans doute plus efficace (ou moins laborieux) pour mettre en forme
cet feuille.
Voici alors comment je procède :
1) j’ouvre l’export donné par AMC qui se situe dans le dossier exports ;
2) Je sélectionne toute la partie de la feuille Notes en partant de la cellule A3 (en fait, je sélectionne tout sauf les 2
premières lignes qui sont vides) et je les copie.
3) je retourne dans mon fichier Suivi_Cap_Term.ods (pour un suivi de mes terminales) et, dans la feuille Notes :
a. je supprime le contenu précédent : toutes les cellules sauf les deux premières lignes ;
b. je colle le contenu copié précédemment en selectionnant la cellule A3 également afin de ne pas toucher aux deux
premières lignes.
Voici le début du tableau collé qu’on obtient :

La ligne 2 de ce tableau sert uniquement à formater les codes des différentes capacités en retirant leur numérotation
après le tiret.
Prenons, comme par exemple ici, la capacité que j’ai identifiée par le nombre 003. Dans le QCM AMC, chaque question
doit avoir une identification unique. Aussi, on ne peut donc pas mettre plusieurs fois le même nombre. Comme ici
l’évaluation comporte 5 questions évaluant toutes la même capacité 003, on doit numéroter 003-01 puis 003-02 puis
003-03 etc. dans le fichier .tex fourni à AMC.
Les formules indiquées à partir de la cellule G3 de la ligne 2 permettent de supprimer la partie située après le tiret et
on obtient donc ici « 003 » pour chaque question commençant par 003.
On copie-colle cette formule vers la droite pour autant de question qu’on a dans l’évaluattion. Quand le tableau s’arrête
avant, on voit que les numéros sont fixés à 000, ce qui sera détecté par le script pour s’arrêter.
Le principe du script est ensuite le suivant :
1) Le script se positionne à la ligne 6 (première ligne élève) ;
2) Le script lit le contenu de la cellule G2 et si le contenu contient un nombre non nul, alors il récupère le nombre de
points en G6 ;
3) il identifie, dans la feuille SuiviCap la colonne qui correspond à la capacité visée ;
4) il recherche, grâche à l’identifiant de l’élève (colonne B) la ligne correspondante à l’élève en cours de traitement ;
5) il récupère le nombre de points déjà attribué à cet élève pour cet item et ajoute le nombre de points de l’évaluation
en cours de traitement ;
6) il réalise la même opération avec le total de cet item. Dans la feuille Notes, les totaux sont en ligne 4 et dans la feuille
SuiviCap, j’ai ajouté une colonne à droite de chaque note pour avoir le total ;
7) le script parcourt ainsi toutes les lignes de la feuille Notes et, pour chaque élève détecté, recommence les mêmes
opérations.

16
Voici le script VBA utilisé dans OpenOffice (il manque les indentations ...)
Code LATEX
Option Explicit

Sub copiepoints
Dim oDoc as object, oFeuille as object, oCell as object
Dim nbcolonne as integer, nbLigne as integer
Dim k as integer
Dim i as integer
Dim oCap as object
Dim dest as object
Dim pts as object
Dim tabfinal as object
Dim range as object
Dim totalq as object
Dim total as object
Dim max as object
Dim id, idelev as object
Dim result as Integer

oDoc = ThisComponent
oFeuille = [Link]("Notes") 'Feuille servant de "tampon"
tabfinal = [Link]("SuiviCap") ' Feuille avec le tableau final des savoir-faire
id = [Link](1,5) 'cellule contenant le premier identifiant élève
' Boucle sur les lignes et colonnes
nbLigne = 5 ' le premier élève doit se situer à la ligne 6 du tableur (5 en vbscript)
Do
nbColonne = 6 ' Première colonne = colonne G (A VERIFIER)
i= 5 ' Première ligne associée à un élève
idelev = [Link](1,i) ' premiere cellule contenant un identifiant élève dans le tableau de
suivi
oCell = [Link](nbColonne,1) 'cellule contenant le premier numéro de capa dans le tableau de
l'eval
Do While [Link] <> [Link] ' On cherche la ligne de l'élève correspondant dans la feuille de suivi
i = i + 1
idelev = [Link](1,i) ' On parcourt la colonne C
Loop
If [Link] <> "" And [Link] <> "000" Then 'Si cette cellule n'est pas vide ou nulle alors il y a un
item évalué
Do
pts = [Link](nbColonne,nbLigne) 'cellule contenant les points obtenus sur cette question
par l'élève
for k = 3 to 117 ' On balaye toutes les capa
oCap = [Link](k,0) 'cellule contenant le numéro de la capa dans le tableau de suivi
If [Link] = [Link] Then ' si la capa a été évaluée
If [Link] <> "" Then ' Si l'élève n'était pas absent, on augmente son total
dest = [Link](k,i) 'cellule contenant le total de pts sur cette capa pour l'élève
[Link] = "Blue" 'Couleur bleue pour la note
[Link] = [Link] + [Link] 'on ajoute les pts obtenus au total précédent
totalq = [Link](nbColonne,3) ' On récupère la cellule indiquant sur combien de pts est
évaluée la capa
max = [Link](k + 1,i) ' On récupère la cellule indiquant sur combien de pts est évaluée la
capa
[Link] = "Green" 'Couleur verte pour le total
[Link] = [Link] + [Link] ' Mise a jour du max de la capa pour l'élève
End If
End If
next
nbColonne = nbColonne +1 'On passe à la question suivante
oCell = [Link](nbColonne,1) 'cellule contenant le numéro de capa suivant dans le tableau de
l'eval
Loop Until [Link] ="" ' On s'arrête une fois toutes les questions balayées
End If
nbLigne = nbLigne +1 ' On passe à l'élève suivant
id = [Link](1,nbLigne)
Loop Until [Link] = "" ' Tant qu'il y a des élèves dans la liste

End Sub

Exclamation-Triangle Je tiens à préciser que l’utilisation de cette maco est de votre entière responsabilité et que je n’ai peut-être pas testé
tous les cas de figure pour lesquels elle donnerait des résultats erronés !

17
Afin que les totaux fonctionnent correctement, il faut s’assurer que si un élève figure dans la liste de la feuille Notes,
ses notes soient effacées (pour faire la distinction avec 0 et ne pas ajouter des points au total évalué alors que l’élève
était absent).
Pour tous les autres cas, il faut des notes et il faut donc mettre 0 dans les cellules qu’AMC a légendées en couleur.
Voic un exemple de tableau exporté par AMC :

Ici, on voit que pour l’élève Al-Tusi Sharaf, une question n’a pas été notée mais légendée en rose. Il faut refaire appa-
raraître le 0 dans cette cellule avant de lancer la macro.
De même, tous les élèves qui suivent jusqu’à Descartes René n’ont pas répondu aux questions dont les cellules sont en
jaune. Là aussi, il faut faire apparaître les 0 avant de lancer la macro.
Enfin, les deux derniers élèves étaient par exemple absents mais figurent quand même dans cette liste, mais sans note.
Dans ce cas, on doit laisser les cases vides, car le script fait la distinction entre un 0 et une cellule vide.
Pour remplacer les cases colorées par des 0, il faut changer le formattage des cellules. Pour ma part, je procède ainsi :
Je sélectionne tout le tableau puis dans Format -> Cellules... -> Nombres, je change le format Standard

par

18
Ainsi, les 0 apparaissent et on peut supprimer ceux des élèves absents. Finalement, ce tableau serait formaté ainsi
avant de lancer la macro :

Pour lancer la macro (dans Openoffice) : Outils -> Macro. -> Exécuter la macro ... puis on sélectionne la macro
copiepoints située ici :

On peut alors aller voir le résultat dans la feuille SuiviCap :

On voit par exemple que l’élève Niels Abel a 0, 25 pt pour la capacité 003 : « Préequis Suites » sur un total possible de
5 pts.
Á chaque évaluation et lancement de ce script, les différentes valeurs sont modifiées (ou pas si l’élève est absent).
Cela permet, en cours d’année, d’avoir un suivi relativement précis sur les capacités de chaque élève. On peut donc
imaginer des travaux et/ou évaluations différenciés et adaptés en fonction de ces résultats.
Bon courage à toutes et tous !
That’s all Folks !

19
5 Liens
Les liens vers tous les fichiers nécessaires et dont il est question dans ce document.
Installation logicielle :
v AMC : [Link]
v pdftk

Fichiers LATEX : 2 QCM et mes préambules perso :


v source_ano.tex
v [Link]
v [Link]
v [Link]

Fichiers .csv utilisés :


v [Link]
v [Link]

Fichier « Openoffice Calc » pour le suivi des capacités (Terminale et seconde) :


v Suivi_Cap_Term.ods
v Suivi_Cap_2GT01.ods

Fichier nécessaire pour le bon fonctionnement d’AMC avec Python :


v prepPythonTex4AMC

Script Python pour la concaténation copie + corrigé :


v script_Copies_Corrigees.py

Exemples de sujets, de copies annotées et de corrigés :


v Un QCM de Terminale nominatif au format .pdf
v Les corrigés de ce QCM au format .pdf
v Une copie annotée de ce QCM au format .pdf
v La même copie mais avec son corrigé à la suite au format .pdf
v Un QCM de seconde anonyme au format .pdf
v Les corrigés de ce QCM au format .pdf
v Une copie annotée de ce QCM au format .pdf
v L’ensembe de tous les fichiers précédents dans un zip

20

Vous aimerez peut-être aussi