Sujets individuels uniques

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur: Développeurs

Re: Sujets individuels uniques

Messagede Arnaud » Lun 11 Mar 2013, 22:39

Je n'ai toujours pas compris à quoi servait de ressortir un sujet déjà imprimé, j'ai dû rater quelque chose dans le topic.

Transformer un exercice en version pyromaths dépend de trois choses à mon avis :

1) le niveau de variabilité sur les éléments de l'énoncé,
2) le degré de complexité du chemin de résolution ( c'est la plus grosse part ), donc multiplié par le résultat de 1),
3) Les éventuelles figures complétées pour le corrigé.

Juste histoire de sortir une théorie fumante.

Sinon, 6 sujets différents ne suffisent pas pour éliminer la triche ? ( 1 pour l'intéressé, 2 pour les voisins gauche/droite, et 3 pour ceux devant )
Certes, c'est plus fatigant à distribuer, quoi que on peut bien s'organiser, mais tu as un certain gain en correction et en création de sujets.
Ou alors ils échangent les sujets dans ton dos ?
Avatar de l’utilisateur
Arnaud
Critique officiel de pyromaths
 
Messages: 603
Inscription: Sam 26 Aoû 2006, 21:49
Localisation: Allemagne

Re: Sujets individuels uniques

Messagede Jérôme » Lun 11 Mar 2013, 22:55

Arnaud a écrit:Sinon, 6 sujets différents ne suffisent pas pour éliminer la triche ? ( 1 pour l'intéressé, 2 pour les voisins gauche/droite, et 3 pour ceux devant )
Certes, c'est plus fatigant à distribuer, quoi que on peut bien s'organiser, mais tu as un certain gain en correction et en création de sujets.
Ou alors ils échangent les sujets dans ton dos ?

Je partage ce point de vue.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Lun 11 Mar 2013, 23:58

Arnaud a écrit:Je n'ai toujours pas compris à quoi servait de ressortir un sujet déjà imprimé, j'ai dû rater quelque chose dans le topic.

Dans mon cas, c'est surtout la correction que je veux pouvoir imprimer plus tard, pour me laisser éventuellement le temps de la coder correctement. Ce qui implique de pouvoir reproduire la série de valeurs aléatoires qui a servi à générer le sujet la première fois.
J'ai moi aussi du mal à trouver un bon use case pour la ré-impression du sujet. En fait, ce n'est pas mon propos: j'hérite juste indirectement de cette possibilité, car quand on peut reproduire la série de valeurs on peut reproduire correction et sujet.
Plus généralement, la possibilité de spécifier une seed permet la reproductibilité. C'est une qualité que j'utilise pour dissocier (en partie) codage du sujet et de la correction. J'imagine qu'elle pourrait peut-être avoir d'autres usages qui m'échappent. À mon sens, cette reproductibilité (optionnelle) est indéniablement positive et, comme j'ai l'impression qu'elle est parfois incomprise, je me permets de l'expliquer plus longuement. J'espère qu'à force, cela ne donne pas l'impression que j'essaie de l'imposer! :)

Arnaud a écrit:Sinon, 6 sujets différents ne suffisent pas pour éliminer la triche ? ( 1 pour l'intéressé, 2 pour les voisins gauche/droite, et 3 pour ceux devant )
Certes, c'est plus fatigant à distribuer, quoi que on peut bien s'organiser, mais tu as un certain gain en correction et en création de sujets.
Ou alors ils échangent les sujets dans ton dos ?

Je pourrais en effet me contenter de quelques sujets. Mais le chiffre grimpe vite: le test se fait en deux sessions ou plus (pas d'amphi assez grand pour contenir tout le monde), ce qui multiplie le nombre de sujets nécessaires. En pratique, je crois avoir utilisé jusqu'à 5 ou 6 sujets, que j'utilise par groupes en réutilisant ici et là un sujet. Mon idée c'était d'introduire suffisamment de variabilité pour décourager efficacement les velléités torves.
Au final, j'ai trouvé cela insuffisant (oui, il doit aussi y avoir un peu d'échange de sujet) et surtout laborieux. Pour ne pas faciliter l'identification des sujets, leur ID n'est pas indiqué: les différences sont donc subtiles et le triage pré-correction est long. Ensuite, le nombre de copies "identiques" diminue drastiquement, et avec lui les "économies d'échelle" cognitives à la correction. Les opportunités d'erreurs ou de fautes d'inattention augmentent également…
Franchement, j'ai trouvé cette solution pas assez efficace (question triche) et beaucoup plus contraignante qu'elle n'en avait l'air. Peut-être peut-on s'y prendre mieux que moi? En tous cas, c'est suite à cette expérience que j'ai envie d'essayer la copie unique, avec tout le support de pyromaths (customisé au besoin). En toute sincérité, j'ai l'impression que la simple menace du sujet individuel est déjà une motivation efficace pour beaucoup!
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Jérôme » Mar 12 Mar 2013, 10:06

Je comprends ton agacement par rapport à la triche. Et ton envie de trouver une parade réellement efficace.

Pour revenir au problème des seeds, cela ne serait pas simple à mettre en place. En effet, pour un exercice de calcul littéral, le nombre de valeurs aléatoires dans une question peut être assez important. Par exemple, si l'exercice consiste à développer 3(2a+4), il y a des variables aléatoires pour 3, 2 et 4, mais aussi pour savoir si le facteur 3 doit être "devant ou derrière" (2a+4). Ça en fait déjà 4 pour une question. :?
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Mar 12 Mar 2013, 11:22

Jérôme a écrit:Je comprends ton agacement par rapport à la triche. Et ton envie de trouver une parade réellement efficace.

Ça m'ennuie surtout pour des raisons de justice: certains tricheurs obtiennent de meilleures notes que d'autres qui ont plus travaillé et mieux compris. Si je ne suis pas capable de leur garantir une évaluation juste, comment les motiver à s'investir et à travailler?
Et puis, au delà de l'évaluation académique, c'est aussi mon cours que j'aimerais pouvoir évaluer correctement, de manière à étoffer les parties qui posent objectivement plus de problèmes aux étudiants.

Jérôme a écrit:Pour revenir au problème des seeds, cela ne serait pas simple à mettre en place. En effet, pour un exercice de calcul littéral, le nombre de valeurs aléatoires dans une question peut être assez important. Par exemple, si l'exercice consiste à développer 3(2a+4), il y a des variables aléatoires pour 3, 2 et 4, mais aussi pour savoir si le facteur 3 doit être "devant ou derrière" (2a+4). Ça en fait déjà 4 pour une question. :?

Je ne comprends pas en quoi le nombre de valeurs aléatoires complexifie la mise en place d'un mécanisme de seed. As-tu essayé le patch ci-dessus?
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Jérôme » Mar 12 Mar 2013, 18:47

djinn a écrit:Je ne comprends pas en quoi le nombre de valeurs aléatoires complexifie la mise en place d'un mécanisme de seed. As-tu essayé le patch ci-dessus?

En effet, je n'avais pas compris le fonctionnement de random.seed(). Ce n'est pas grand chose à implémenter, effectivement.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Mer 27 Mar 2013, 21:12

Bon, j'ai suffisamment avancé dans ce projet de sujets uniques, je peux désormais vous faire part de mes résultats concrets. :)

Comme une image vaut mieux qu'un long discours, voici un exemple:
Image
Au final, dans mon cas, chaque sujet fait 3 pages A4 que je rassemble sur une feuille A3 recto-verso en mode "livret", destinée à être pliée en deux (d'où la première page blanche, qui est en fait la page 4):
  1. Une page de couverture, où figure notamment le numéro du sujet, en "toutes lettres" (entête) ainsi que dans le QRcode situé en haut à gauche.
  2. Une page d'exercices, dont l'ordre des exercices, l'ordre des réponses (pour les questions QCM) ainsi que les valeurs sont tirées au hasard.
  3. Une page de formulaire.
Comme expliqué précédemment, il y a un lien entre le n° du sujet et la série aléatoire permettant de générer ce sujet en particulier, autrement dit: entre ce n° et la "seed" initialisant le module random au lancement de pyromaths.
Ce lien est asymétrique: il est impossible de générer un sujet à partir du n° seul, il est nécessaire de connaître la partie secrète de cette seed, qui n'est affichée nulle part. Pour autant, qui connaît cette clé secrète et le n° du sujet peut générer a posteriori sujet, sujet avec réponses (pour la correction manuelle), ou correction complète destinée à l'étudiant.

Au moment de la correction, je scanne le QRcode à l'aide de mon smartphone (j'utilise l'application gratuite QR Droid sur un téléphone Android) -- on fait avec ce qu'on a!
Ce QRcode contient en réalité une URL (pointant vers mon ordinateur) avec un seul paramètre: le n° du sujet. L'ordinateur peut ainsi m'afficher le sujet avec réponses, et imprimer la correction complète destinée à l'étudiant pendant que je note sa copie. Je n'ai plus qu'à agrafer sujet et correction, avant de passer au suivant.
Pour l'instant, j'utilise une simple page PHP (servie par Apache) affichant le n° du sujet scanné. Il me reste à coder un micro-serveur HTTP en python (je compte ré-utiliser une librairie libre existante) qui lancera pyromaths avec ce n° comme argument.

Dans ce projet, j'utilise pyromaths en ligne de commande exclusivement (jamais de GUI):
  • Une partie des paramètres est passée via la ligne de commande, le pyromaths modifié que j'utilise acceptant les arguments suivants:
    $ ./pyromaths -h
    usage: pyromaths [-h] [-c CONFIG] [-b] [-r] [-s SEED]

    Pyromaths generates maths problems and solutions.

    optional arguments:
    -h, --help show this help message and exit
    -c CONFIG specify a custom config file
    -b run in batch mode (no GUI)
    -r randomize problems order
    -s SEED initialize random generator with custom seed
  • L'autre partie des paramètres est passée via un fichier pyromaths.xml standard, à cela prêt qu'il permet également de définir une liste d'exercices via une nouvelle section "exercices":
    <exercices>
    <exercice niveau="3" no="6"/>
    <exercice niveau="4" no="7"/>
    ...
    </exercices>
Voilà, en gros. :)
Bon, comme j'étais pressé, j'y suis allé à la tronçonneuse: il est probable que j'ai abîmé certaines fonctionnalités de pyromaths en mode GUI, j'ai copié du code d'un module à l'autre pour le customiser, il y a encore pas mal de paramètres "codés en dur"… bref, j'étais en mode barbare. :-p
Maintenant, s'il y a là-dedans des choses que vous trouvez intéressantes, il est possible de les re-coder en les intégrant plus délicatement au code existant…
Dernière édition par djinn le Jeu 28 Mar 2013, 21:33, édité 3 fois.
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Jérôme » Mer 27 Mar 2013, 22:15

Ah oui, c'est du joli. Ce serait intéressant que tu détailles un peu plus comment fonctionne l'interaction entre le QRCode et ton serveur, j'imagine que ça pourrait intéresser du monde (pas moi, je n'ai qu'un vieux téléphone ;) )
djinn a écrit:Maintenant, s'il y a là-dedans des choses que vous trouvez intéressantes, il est possible de les re-coder en les intégrant plus délicatement au code existant…

hé, hé ! :) Évidemment qu'on a envie que ce soit proprement intégré. Ce n'est pas une option à proprement parler, c'est une autre utilisation possible de Pyromaths, et ça, ça me plaît. Le fichier xml avec la liste des exos, c'est chouette. Ce serait peut-être mieux si on passait les intitulés plutôt que des numéros, mais je n'en suis pas certain.
C'est cool que tu aies bien avancé sur ton projet.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Jeu 28 Mar 2013, 01:28

Jérôme a écrit:Ah oui, c'est du joli. Ce serait intéressant que tu détailles un peu plus comment fonctionne l'interaction entre le QRCode et ton serveur, j'imagine que ça pourrait intéresser du monde (pas moi, je n'ai qu'un vieux téléphone ;) )

Merci. :)
J'utilise un smartphone parce que c'est ce que j'ai sous la main (on me l'a donné!). Ça marcherait tout aussi bien avec une webcam et un logiciel de décodage de codes-barre (il existe de bonnes librairies libres et gratuites, comme zxing).

Je n'ai pas encore codé le serveur définitif, mais voilà néanmoins plus de détails:
  • Mon téléphone est connecté en WIFI sur mon réseau local (adressage IPv4 en 192.168.0/24), comme mon ordinateur principal. Cela me permet d'inclure directement l'adresse IP locale de mon ordi (192.168.0.1 par exemple) dans le QRcode.
  • Pour l'instant, le QRcode contient donc une URL sous la forme: http://192.168.0.1/ex.php?s=5637 pour le sujet n°5637.
  • Lorsque le logiciel de scanning de codes-barre lit ce QRcode, il détecte le format d'une URL et affiche la page web correspondante. Ce faisant, il se connecte au serveur web de mon ordinateur, en lui fournissant le n° du sujet comme paramètre.
  • Pour l'instant, il s'agit d'une simple page PHP servie par Apache, qui se contente d'afficher le numéro du sujet (proof of concept). À terme, ce sera un serveur HTTP minimaliste (en python), permettant juste d'accepter une requête HTTP et d'en extraire le paramètre "n° du sujet".
  • Il ne reste plus à ce serveur qu'à lancer pyromaths avec ce paramètre, lequel génère le PDF de ce sujet avec réponses, et l'ouvre avec le lecteur PDF par défaut.
Quelques remarques:
  • Le QRcode est créé grace au package LaTeX pst-barcode.
  • Pour l'instant, sa création est hardcodée dans le nouveau template examen.tex (créé à cette fin), le numéro du sujet y figurant sous une forme ##{{SUJET}}##, que pyromaths substitue à la création du PDF (comme les autres variables de templates)
  • Plutôt qu'une adresse IP, il serait plus flexible d'utiliser un nom de domaine et la résolution DNS, mais ce serait plus délicat à configurer pour un environnement réseau quelconque (si on voulait généraliser).
  • Il est préférable d'avoir un serveur HTTP python dédié, plutôt qu'utiliser Apache par exemple:
    • Cela permet de distribuer ce serveur ultra-léger avec pyromaths.
    • Cela permet d'afficher facilement le corrigé PDF sur l'écran (cross-platform), car le serveur aura été lancé d'une session graphique. Avec un serveur web généraliste, tournant en dehors de toute session graphique, il faudrait préciser le DISPLAY cible (en termes UNIX), etc.
    • Il vaudrait mieux utliser un port autre que le 80 (TCP) afin de pouvoir le faire touner en parallèle d'un "vrai" serveur web.
    • En l'occurence, il vaudrait mieux utiliser un port>1024 afin de pouvoir lancer ce serveur en tant que simple utilisateur (!root).
  • Si on utilise une webcam au lieu d'un smartphone connecté sur le réseau local, pas besoin de serveur!

Jérôme a écrit:hé, hé ! :) Évidemment qu'on a envie que ce soit proprement intégré. Ce n'est pas une option à proprement parler, c'est une autre utilisation possible de Pyromaths, et ça, ça me plaît.

Cool. :)
D'un point de vue architectural, la première différence me semble-t-il (et peut-être la principale) c'est l'utilisation de pyromaths en dehors de toute interface graphique. En d'autres termes, l'utilisation de pyromaths comme une commande UNIX permettant de générer des exercices de maths sous différents formats.
À mon avis, la première chose à faire en vue d'une intégration propre, c'est de segmenter proprement le code de manière à ce que l'interface graphique soit "optionnelle". Autrement dit:
  • Un générateur d'exercices (au format TEX, DVI, PS ou PDF), accessible comme librairie python et comme "commande UNIX".
  • Une interface graphique permettant de configurer simplement ce générateur, en mode desktop ou en mode web.
Dans un second temps, on pourrait intégrer les autres fonctionnalités. Cependant, même si l'on s'en tient à celles que j'ai été contraint d'utiliser, ça fait déjà pas mal de variables, et infiniment plus de combinaisons possibles de ces variables: pour que ça fonctionne ça va demander une architecture super-propre (et beaucoup plus de travail que de faire ce que j'ai fait).


Jérôme a écrit:Le fichier xml avec la liste des exos, c'est chouette. Ce serait peut-être mieux si on passait les intitulés plutôt que des numéros, mais je n'en suis pas certain.

À voir. Personnellement, et dans un objectif "universaliste", je ne suis pas favorable à l'utilisation d'intitulés dans la mesure où ils sont trop "localisés". Même si je reconnais que, sous la forme que j'ai utilisé, la section XML "exercices" est en effet assez opaque. Honnêtement, en temps normal, cette section devrait être remplie soit via un GUI bien foutu, soit manuellement par quelqu'un qui sait ce qu'il fait.
En réalité, je doute même de la pertinence de regrouper les exercices dans des packages python définis par le niveau en mathématiques dans une scolarité française "normale". Il me semble que c'est une variable certes importante, mais secondaire (ou relative): finalement, ce n'est qu'une façon de présenter l'inventaire d'exercices disponibles pour des enseignants français en 2013, cela n'a que peu à voir avec les mathématiques ou avec l'organisation logique du code.
À mon sens, on devrait idéalement distinguer la "logique du code" de la "logique de présentation", de manière à pouvoir présenter ou regrouper différemment les mêmes exercices, afin de correspondre à d'autres cultures (dans l'espace ou dans le temps). Ce serait probablement un premier pas vers l'internationalisation de pyromaths, et la domination ultime du monde! ;-)
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Arnaud » Jeu 28 Mar 2013, 09:16

djinn a écrit:À mon sens, on devrait idéalement distinguer la "logique du code" de la "logique de présentation", de manière à pouvoir présenter ou regrouper différemment les mêmes exercices, afin de correspondre à d'autres cultures (dans l'espace ou dans le temps). Ce serait probablement un premier pas vers l'internationalisation de pyromaths, et la domination ultime du monde! ;-)


Oui, cela fait longtemps que je me fais cette remarque, mais la présentation est tellement ancrée dans le code que cela reviendrait à tout réécrire.
Bref pas du jour au lendemain.

Sinon, bravo pour ta motivation, c'est clair que ton projet avance bien.
Avatar de l’utilisateur
Arnaud
Critique officiel de pyromaths
 
Messages: 603
Inscription: Sam 26 Aoû 2006, 21:49
Localisation: Allemagne

Re: Sujets individuels uniques

Messagede djinn » Jeu 28 Mar 2013, 09:38

Merci pour tes encouragements. :)
En effet, séparer logique et présentation dans le code actuel est un travail important. Cela dit, on doit pouvoir s'en rapprocher par étapes. Mais pour commencer, il faudrait déjà avoir une idée assez claire de l'architecture finale… Et si on ouvrait un fil dédié pour en discuter?
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Jérôme » Jeu 28 Mar 2013, 17:57

Bonne idée, mais mes vacances sont terminées. Je retourne bosser les oraux dès demain. Je ne serai de nouveau disponible qu'en juin...
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Jeu 28 Mar 2013, 19:18

Compris. Je tâcherai de ne pas me vexer si je me retrouve à soliloquer sur le fil en question. :-)
Bon courage à toi -- tu prépares un concours?
Dernière édition par djinn le Jeu 28 Mar 2013, 20:15, édité 1 fois.
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

Re: Sujets individuels uniques

Messagede Jérôme » Jeu 28 Mar 2013, 19:50

Oui, je suis en congé pour préparer l'agreg.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1060
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Sujets individuels uniques

Messagede djinn » Jeu 28 Mar 2013, 20:31

Félicitations! :)
Ah, ça serait classe que pyromaths puisse se vanter d'avoir un project leader agrégé. :P
Avatar de l’utilisateur
djinn
 
Messages: 183
Inscription: Dim 03 Mar 2013, 11:38

PrécédenteSuivante

Retourner vers Propositions

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

cron