Logiciels libres et enseignement

Favoriser l’usage de logiciels libres et de formats ouverts

Wims[4]

dimanche 2 mai 2004, par Georges Khaznadar

Le langage auteur de Wims : OEF en bref

Le langage auteur de Wims : OEF en bref

<< PRÉCÉDENT SUIVANT >>

Le langage qui a été utilisé comme source des exercices se nomme langage OEF (Open Exercise Format - Format Ouvert d’Exercices). Comme tous les langages compris des ordinateurs, il comporte des mots-clés, et quelques caractères spéciaux.

Nous avons remarqué quelques mots-clés dans le dernier QCM illustré ci-dessus :

\integer { }, \text { }. Ce sont des déclarations de variables de type entier, de type texte. On peut aussi déclarer des variables de type nombre quelconque avec \real, et il existe encore plusieurs autres types.

random( ), item( ). Ce sont des fonctions, fort utiles pour fabriquer les roulettes aléatoires. Random permet de choisir une valeur quelconque dans un intervalle numérique ou dans une liste. Par exemple age_pierre=random(7..12) signifie que la variable « age_pierre » prendra une valeur aléatoire dans l’intervalle 7 à 12. Comme il s’agit de la déclaration d’un entier (\integer), ce sera 7, 8, 9,10, 11 ou 12. multiple=item(\a,\m) signifie que la variable « multiple » prendra la a-ième valeur dans la liste nommée « m ». Si a vaut 2, multiple aura pour valeur « deuxième » et si a vaut 3, multiple aura pour valeur « troisième ».

\choice { }{ }{ } est la déclaration d’un item de QCM. Les trois paramètres sont : l’invite (la phrase à placer avant les cases à choisir, facultative), la bonne réponse, et une liste de réponses bonnes ou mauvaise, qui seront mélangées avec la bonne. Il existe aussi la déclaration \reply { }{ }{ } où les paramètres entre accolades désignent dans l’ordre : l’invite, le modèle de bonne réponse, et la méthode à utiliser pour traiter cette réponse (paramètre facultatif). On doit marquer {type=matrix} par exemple pour signifier que la réponse attendue est de type matrice, {type=units} pour signifier que la réponse attendue est une grandeur physique, qu’une unité doit être utilisée et pour déclencher un mécanisme de conversion rationnel.

\statement { } est la déclaration de l’énoncé de l’exercice. Nous constatons que par défaut il est possible d’insérer des balise HTML telles que <center> pour le centrage, <b> pour les caractères gras, etc. Le mot-clé \embed{} à l’intérieur d’un énoncé permet de placer le champ en attente d’une réponse dans le fil de l’énoncé. Pour le deuxième item d’un QCM, on utilisera \embed{choice 2}, et pour la troisième réponse libre, on utilisera plutôt \embed{reply 3}.

Un exemple de réponse avec des grandeurs physiques

Source de l’exo

\integer {longueur=random(12..18)}
\integer {largeur= random(7..10)}
\integer{d=80}
\integer{aire=\longueur*\largeur} \real{masse=\aire*\d/10000}

\statement{On découpe un rectangle de \largeur &times; \longueur cm dans une feuille de papier à \d g/m<sup>2</sup>.
<hr>
L'aire de ce rectangle est \embed{reply 1}, et il pèse donc \embed{reply 2}. }

\reply{ }{\aire cm^2}{type=units}
\reply{ }{\masse g}{type=units}
L’exo en cours de fonctionnement

L’exemple de la copie d’écran est déjà rempli avec des réponses considérées comme justes. Vous pourrez essayer ce que donnent par exemple des réponses du type « 126 » au lieu de « 126 cm² » : une interaction supplémentaire redemande de préciser l’unité. Des réponses telles que « 0.0126 m^2 » pour l’aire et « 10080e-4 g » pour la masse seraient acceptées comme exactes dans l’exemple ci-dessus. L’évaluation du système d’unités se fait bel et bien en considérant la dimension physique associée à la réponse, et en convertissant si nécessaire avant de comparer la réponse au modèle.

Un exemple de réponse avec des étiquettes à placer

Pour les experts ... qui ont bien compris le fonctionnement des mots-clés « \embed { } » et des champs « \reply { }{ }{ } » : type=dragfill permet de définir des réponses qui seront affichées sous forme d’étiquettes. Il est alors obligatoire de référencer ces réponses avec des mots-clés \embed { } dans l’énoncé, pour signaler les places où ils devront se trouver pour former une réponse correcte. Placer des étiquettes est très utile quand la capacité qu’on veut tester n’est pas l’habileté au clavier, mais le fait que l’étudiant comprenne une structure.

J’ai choisi comme exemple un exercice d’allemand, pour lequel un étudiant serait bien en peine de former des mots contenant des mots tels que « muβ », ou « weiβt » car le caractère « β » est absent du clavier français (ce caractère est codé par « &szlig; » en langage HTML, ce qui rend la compréhension de la source un peu pénible).

Message aux non-germanistes : il est facile de réussir l’exercice. La première phrase est dans l’ordre sujet, verbe, complément. Il suffit de replacer les mêmes mots dans l’ordre sujet, complément, verbe et le tour est joué. Dans l’exemple ci-dessous, la bonne réponse est « Er weiβt daβ er Karl heiβt », qui se traduit en « Il sait qu’il se nomme Karl. »

Source de l’exo

\text { lignes= Ich mu&szlig; kommen., Ich wei&szlig; da&szlig;, ich, kommen, mu&szlig; ;
Du kannst essen., Du wei&szlig;t da&szlig;, du, essen, kannst;
Er hei&szlig;t Karl, Er wei&szlig;t da&szlig;, er, Karl, hei&szlig;t }

\text { l=randomrow(\lignes)}
\text { l1=item(1,\l)}
\text { l2=item(2,\l)}
\text { l3=item(3,\l)}
\text { l4=item(4,\l)}
\text { l5=item(5,\l)}

\statement { <h1>Bau den Satz mit der Maus</h1> \l1. <br>\l2 \embed {reply 1} \embed {reply 2} \embed {reply 3}. }

\reply { } {\l3} {type=dragfill}
\reply { } {\l4} {type=dragfill}
\reply { } {\l5} {type=dragfill}
L’exo en cours de fonctionnement

Cet exercice utilise une « roulette » très intéressante pour les textes aléatoires : la fonction randomrow() permet de découper une partie dans un texte (le délimiteur est le caractère point-virgule suivi d’un retour à la ligne). On voit qu’après le passage de la « roulette », tous les éléments de l’énoncé se retrouvent dans les variables l1, l2, ... l5. La banque de textes est dans la variable « lignes » qui est définie au début de la source de l’exercice.

Recherche avancée