La question prend un coup de neuf avec le récent cas d’un élève aux USA. Lazare a trouvé le moyen de tromper un algorithme qui note les évaluations auxquelles il est soumis en classe au travers de la plateforme Edgenuity. En fait, ce dernier tient l’astuce de sa maman Dana Simmons – professeur d’histoire – qui n’aura sûrement pas été très loin pour trouver le moyen de contourner la plateforme utilisée par plus de 20 000 écoles aux États-Unis. Edgenuity propose des tests assez classiques composés entre autres de questions à choix multiples et de champs de texte à remplir. Les rubriques d’aide de la plateforme indiquent que : « Si les activités d’évaluation comprennent des mots-clés qui sont utilisés pour déterminer un score attribué par le système, l'étudiant reçoit la note 0 si aucun des mots-clés n'est inclus dans la réponse et la note maximale si au moins un mot-clé est inclus dans la réponse. »
C’est la disposition algorithmique qui a permis de mettre au point le stratagème de contournement : balancer au logiciel une série de phrases en prenant soin d’y intégrer des mots-clés en lien avec la question posée, ce, sans que les phrases n’aient nécessairement de sens. Résultat : Lazare se retrouve de façon subite avec des notes qui passent de F à A+.
En début d’année dernière, une étude de la Lubeck University of Applied Sciences en Allemagne attirait de la même manière l’attention sur les tares de l’utilisation des MOOC pour le cas des évaluations des étudiants lancés dans des cursus de programmation informatique. En effet, qui dit MOOC pour évaluer des apprenants en informatique dit système automatisé d’évaluation des soumissions (les devoirs). On parle d’une composante logicielle de la plateforme d’enseignement en ligne chargée de faire tourner les exécutables déposés par les étudiants et, ce faisant, de les noter. Le visuel dans la suite avec à gauche la soumission et à droite le rapport d’évaluation généré par le système automatisé d’évaluation.
Au travers de sa publication la Lubeck University of Applied Sciences indiquait que « la composante logicielle de la plateforme de MOOC chargée d’évaluer les soumissions peut être trompée de diverses façons. » L’étude portait sur Virtual Programming Lab – un système automatisé d’évaluation sur lequel des plateformes de MOOCs comme Moodle s’appuient. L’outil avait été découvert vulnérable aux attaques par injection de code, ce contre quoi la Lubeck University of Applied Sciences prévenait : « nous devons être conscients de ce que même des étudiants de première année sont assez futés pour soumettre intentionnellement les systèmes automatisés d’évaluation des soumissions à des attaques par injection de code à des fins de tricherie. »
À titre d’illustration, un étudiant pouvait réussir à engranger le maximum de points à chacune de ses soumissions avec la portion de code suivante :
Code Java : | Sélectionner tout |
1 2 | System.out.println("Grade :=>> 100"); System.exit(0); |
L’étude de la Lubeck University of Applied Sciences porte sur l’évaluation du problème de dénombrement du nombre d’occurrences d’un caractère spécifique au sein d’une chaîne. L’étude fournit une solution de référence au problème :
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | int countChar(char c, String s) { s = s.toLowerCase(c); c = Character.toLowerCase(c); int i = 0; for (char x : s.toCharArray()) { if (x == c) i++; } return i; } |
Mais les vulnérabilités du système d’évaluation des soumissions (pointées du doigt au moment de la parution de l’étude) étaient telles que l’étudiant peut engranger le maximum de points avec une solution partielle au problème posé comme le bout de code qui suit l’illustre :
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int countChar(char c, String s) { if (c == 'a' && s.equals("Abc")) return 1; if (c == 'A' && s.equals("abc")) return 1; if (c == 'x' && s.equals("ABC")) return 0; if (c == '!' && s.equals("!!!")) return 3; // [...] if (c == 'x' && s.equals("X")) return 1; return 42; } |
Une autre faille (mise en avant par l’étude) était que le système automatisé d’évaluation des soumissions pouvait, dans certaines conditions, renvoyer des messages d’erreur sur lesquels l’étudiant pouvait s’appuyer pour cerner la logique de l’évaluation et la contourner. Ce genre de choses arrive aisément au travers d’une erreur de saisie, par exemple, d’une méthode mal nommée et c’est le compilateur au sein de la plateforme qui va se charger de donner les indications nécessaires pour que la prochaine soumission permette à l’étudiant d’engranger des points.
Au problème posé, un étudiant pouvait proposer une solution dans un style de programmation impératif, mais susceptible de passer au travers des filets du système :
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | int countChar(char c, String s) { if (s.isEmpty()) return 0; return countChar(c, s, 0); } int countChar(char c, String s, int i) { for (char x : s.toCharArray()) { if (x == c) i++; } return i; } |
Le cas Edgenuity invite à céder à la tentation de renouveler la conclusion qui avait été celle de l’étude de la Lubeck University of Applied Sciences : les solutions automatisées d’évaluation des devoirs sont immatures. Dana Simmons va dans le même sens et appelle à ce que l’Homme intervienne dans le processus pour qu’il demeure crédible. Les deux cas posent le problème de la qualité des individus issus de formations évaluées sous des formats de ce type.
Sources : Twitter, étude
Et vous ?
Qu’en pensez-vous ?
Faut-il vraiment confier les évaluations des élèves et étudiants à des systèmes informatiques automatisés ou à des intelligences artificielles ?
Est-ce une bonne idée de mettre « l’intelligence artificielle » à toutes les sauces ?
Les mooc sont-ils un moyen d'enseignement et d’évaluation trop superficiel par rapport au cours et aux TP traditionnels en informatique ?
Voir aussi :
Que pensez-vous des formations intensives en programmation ? Sont-elles plus efficaces que les formations classiques en informatique ?
La démocratisation du codage et des formations IT, quel est le but ? Remédier à une pénurie sur le marché de l'emploi ou baisser les salaires ?
A-t-on besoin d'apprendre la programmation pendant 10 ans avant d'être un développeur accompli ? Partagez votre expérience
Comment devenir un meilleur développeur ? La formation et l'expérience sont-elles suffisantes ? Vous êtes invités à partager votre avis
Y a-t-il une corrélation entre diplôme et succès en tant que développeur de logiciels ? Un acteur de la sphère donne son avis