Archive for EDBA

[:fr]EDBA et PLC[:]

[:fr]J’ai cherché pendant un temps une corrélation entre le niveau d’Xp atteint sur EDBA et la réussite à l’examen de PLC. Sans succès. Et pourtant j’avais de nombreuses données : l’XP, mais aussi le détail des tests, le temps passé, etc. Je regardais le premier test, ou le nombre de test, ou le meilleur test, … mais les résultats obtenus n’étaient pas convaincant. J’avais abandonné.

Et puis, un jour, j’ai voulu tracé une courbe Evolution de l’Xp en fonction du temps. En fait, la variable de temps était plutot le nombre de tests effectués (le temps et l’activité sont liés, mais l’Xp ne dépend pas du temps mais du nombre de tests effectués). Le résultat n’était pas concluant, quand je voulais comparé l’évolution d’un étudiant aux résultats finaux obtenus par d’autres étudiants, les affichages ne coincidaient pas. Pour tenter de ramener ces tracés, les uns sur les autres, j’ai essayer de tracer Xp/nb test en fonction du nb de test au lieu de Xp en fonction du nb de test. L’affichage était plus concluant et même, il semblait y avoir une corrélation entre les résultats finaux des étudiants. Je suis donc revenu à la recherche d’une corrélation entre le niveau d’Xp atteint sur EDBA et la réussite à l’examen de PLC.

En prenant tous les étudiants que j’avais sous la main, le premier résultat Note à l’exam de PLC en fonction de Xp/nb test fut le diagramme de la partie haute de l’image ci-dessous :

Le résultat n’était pas complètement concluant, mais en regardant les points éloignés, il s’est avéré que le temps d’utilisation d’EDBA ou le nombre de tests effectués n’étaient pas significatif. J’ai donc choisi d’enlever les 10% de données les moins significatives (pour une raison ou une autre). J’ai fait le netoyage en ne regardant pas le graphique mais les données. Après nétoyage, le graphique avait moins de points, mais la corrélation était plus nette (bas de l’image ci-dessus).

C’est même assez étonnant de trouver une corrélation aussi forte pour des données -coté examen- qui sont en général, assez imprécises (la notation d’examen donne souvent des notes pouvant varier …). Il y a peut-être un peu de chance. Et l’effectif n’est plus très gros (8 étudiants). Il faudrait voir avec un peu plus de monde.

Si cela se confirmait, ce serait interressant. Dans tous les cas, cela propose une interprétation de la notation en examen, elle est moins corrélées au niveau d’expertise atteint ou au temps passé sur EDBA (en tout cas je n’ai pas observé grand chose de ce coté là), mais à l’efficacité de l’étudiant, c’est à dire la capacité de l’étudiant à trouver maximiser les résultats aux tests en minimisant le nombre de tests effectués.[:]

Evolutions pédagogiquesCursus changes

D’une année à l’autre, les cours changent. Ce ne sont pas forcément de gros changements. Les étudiants (redoublants ou pas) ne le voient pas forcément. Mais dans les détails, il y a souvent des tentatives, modifications, etc.

Par exemple, pour le cours de PLC, que j’effectue en L3-Miage, à Grenoble, depuis une demi-douzaine d’années, il y a eu :

  • Variations sur le contenu :
    • Versions avec +/- de gel et pseudo-parallélisme
    • Versions avec +/- d’arbres infinis rationnels et d’algorithmique des graphes
    • Versions avec -/+ de langages formels
    • Versions avec différentes présentations/explicitations/formalisations de la récursivité
  • Variations sur le cours/td :
    • Versions avec -/+ de démo dans le cours (dont première séance, en particulier)
    • Versions avec -/+ d’algorithmique
    • Versions avec -/+ d’exercices en cours
  • Variations sur les documents :
    • Versions avec -/+ de documents
    • Versions avec vidéos
    • Versions avec documents sur web perso/Moodle
  • Variations sur ProLog :
    • Versions avec arbre/listes de listes
    • Versions avec +/- d’arithmétique
    • Versions avec swi/edba
  • Variations sur EDBA
    • Versions avec -/+ d’exercices enregistrés
    • Versions avec -/+ d’exercices associés aux tp
    • Versions avec -/+ d’aide
    • Versions avec -/+ d’arithmétique aidée
  • Variations sur les tps :
    • Version avec 1 tp en salle + 3 tp pour le cc à la maison
    • Version avec 2 tp pour le cc à la maison
    • Version avec 1 tp en cours + 2 tp pour le cc à la maison
  • Variations sur les CC en cours :
    • Version avec des 2 CC + 1 QCM
    • Version avec des 2 CC dont un avec sujet double
    • Version avec 1 CC
    • Version avec x CC de 1h/1h30
  • Variations sur les examens :
    • Versions avec +/- d’exercices indépendants
    • Versions avec +/- de questions indépendantes

Pour autant, la matière reste difficile et les résultats des étudiants aux examen à peine satisfaisants.

Résumé (english word from french)

Denis Bouhineau is an associate professor in Computer Science involved in the design and the evaluation of TEL environments (Technology Enhanced Learning Environments).

Alumnus of the École Normale Supérieure de Lyon (89-93), he received a PhD in Computer Science in 1997 on theoretical and practical aspects related to the teaching of geometry with Dynamic Geometry.  Thereafter, he evolved to the education of Algebra with a computer system that combined microworld and CAS features (2000-08: Aplusix). Since 2008, he has been working on web applications for teaching algorithms (EDBA). He is also an active member of the recent UnderTracks projects (2010) specifically concerned with the design of efficient, appropriate and applicable models for sharable data and analysis processes of learner’s interactions with TEL environments.

Production logicielle

Parmi les productions scientifiques auxquelles j’ai participé de ces dernières années, il y a des productions logicielles (aplusix, edba, undertracks),

parmi ces productions certaines sont disponibles (en particulier celles dont je suis l’auteur principal) :

  • edba (source de la version avec 256 exercices) : https://forge.imag.fr/frs/download.php/419/index_EDBA_SPADB256.html
  • edba (source de la version avec 512 exercices) : https://forge.imag.fr/frs/download.php/420/EdbaSpaBd512.html
  • has (petit utilitaire pour assembler des fichiers ) : https://forge.imag.fr/frs/download.php/417/has.c

Dernièrement, il y a eu un nouveau type de production matérielle résultant de mon travail : sur la plateforme UnderTracks, j’ai participé à la mise à disposition des traces anonymisées recueillies avec  Aplusix dans les années 2002-2006 (plus d’un million de lignes).

Javascript – Faille de sécurité ?

Javascript a de nombreux avantages (open, indépendant d’un os, beaucoup utilisé, …), c’est pourquoi je milite pour que les développements dans le monde de l’éducation puissent aussi reposer dessus c’est possible, (j’en ai fait la preuve avec edba, lire cet article) et donnent lieu à des applications sous forme de pages web autonomes (seul besoin pour les faire fonctionner coté utilisateur : un navigateur web et une connexion au réseau ; coté développeur, une fois développée, la page web peut être déposée sur un serveur web minimal). Cependant, jusqu’à maintenant, j’avais un doute : très souvent, l’utilisation de javascript ne prends pas en compte les possibles tentatives de fraude et il s’avère qu’il est assez souvent facile d’arriver à répondre à un quizz, un qcm, … sans connaitre la réponse mais en allant chercher dans le code quelle est la réponse attendue. C’est particulièrement vrai pour des pages reposant uniquement sur javascript. Une solution pour éviter cela consiste à introduire un peu de PHP dans l’application, code déposé sur le serveur pour y faire l’analyse des réponses (laisser le javascript sur le poste client analyser les réponses, c’est prendre le risque de laisser la main à l’utilisateur pour qu’il regarde comment l’analyse se fait, ou la simuler pour voir le résultat, ou … -toute méthode de reverse engineering qui permet de retrouver les réponses), le code sur le serveur est inattaquable (enfin, presque …) et assure la sécurité du système. L’inconvénient, c’est que le projet n’est plus totalement open, qu’il ne peut plus tenir dans une page web unique et qu’il faut connaitre javascript+php pour le développer. Cela fait beaucoup.

Un autre soucis avec Javascript concerne des projets plus gros qui auraient besoin d’un base de  données centralisée sur un serveur (il y en a, et particulièrement dans le domaine de la recherche où l’on veut conserver une trace de l’activité pour en faire l’analyse). Tout faire en javascript semble difficile car l’accès aux bases de données se fait en général à partir des serveurs et non des clients (et donc à nouveau en php, par exemple), ou à partir d’application standard (hors navigateur) pour avoir des droits étendus sur l’accés au réseau (ou au disque dur). Pour les applications web tenant dans une page web, c’est à dire pour les application web fonctionnant dans un navigateur, cela passe par une partie du code sur le client (en général javascript), et une partie sur le serveur (en général php). Pour diverses raisons, et en particulier des raisons de sécurité, la part php est inévitable et ne se réduit pas à laisser rebondir la demande javascript directement vers le serveur. Pour certaines requêtes sur la base de données, le simple rebond est possible : pour la consultation des parties publiques de la base, par exemple ; pour d’autres requêtes un petit problème de confidentialité peut surgir : consultation d’informations personnelles ; pour d’autre encore, c’est un trop gros problème pour imaginer utiliser un simple rebond : par exemple pour l’accès en écriture/modification/suppression sur l’ensemble de la base (par erreur ou à dessein, un utilisateur peut alors altérer/détruire le contenu de la base).

Faut-il se résoudre à apprendre php … ? Non, pas nécessairement … Pour les problèmes de triches aux QCM, il y a moyen de compliquer un peu le code d’évaluation d’une réponse à un test pour que le reverse engineering soit difficile (sans que le travail demandé pour la modification de code soit très importante) : ne pas mettre en clair la réponse (éventuellement la coder, mais cela ne suffit pas toujours), au lieu d’analyser une seule réponse à la fois, il est préférable d’en prendre plusieurs en même temps (la combinatoire des réponses possibles est alors plus grande et ne peut être testée par essai/erreur), et utiliser une fonction asymétrique (type MD5) pour voir les résultats. Ce sera un résultat global, avec un mécanisme de type code-correcteur, on peut à partir de plusieurs résultats globaux de ce genre identifier le nombre d’erreur, et selon la méthode employée localiser les erreurs (mais alors il y a moyen de faire du reverse engineering). Pour l’accès au base de données, la solution vient d’un travail d’identification de la demande avec mot de passe, mais attention, un vrai identification, et qui prend en compte le fait que le code javascript est visible : cela peut se faire avec un système à clé publique (comme pour rsa). La bonne nouvelle, dans un cas comme dans l’autre, c’est que les algorithmes un peu compliqués (MD5, RSA) sont disponibles en javascript (il y a beaucoup de choses en javascript, c’était dèjà une bonne nouvelle il y a quelques années) :

exemple : essayer de trouver les dates de naissance/mort de Alan (pour la naissance, aide : regarder le code, pour la mort, aide ???). Autre exemple avec des réponses booléennes : essayer de trouver le sexe de ces anges (aide : regarder le code), ou de savoir si ceux-ci ont fait avancer l’informatique ( aide ???). Quand il n’y a pas d’aide immédiate (« aide ??? »), i.e. quand regarder le code ne suffit pas, il reste toujours la méthode dite « brutale » qui consiste à tout tester … lorsque le « tout » ne comporte qu’une dizaine de cas, l’étude exhaustive peut se faire à la main ; lorsque le « tout » comporte plusieurs milliers de cas, un programme peut le faire ; lorsqu’il y a des milliards de milliards de cas à voir, … ???