Les universités et autres instituts qui œuvrent dans le domaine de l’éducation s’appuient de plus en plus sur les MOOCs (Massive Open Online Courses – cours en ligne ouverts et massifs) pour transmettre des connaissances et même évaluer les apprenants. La démarche s’applique désormais à une panoplie de domaines comme les langues, l’ingénierie, l’architecture, etc. Une étude de la Lubeck University of Applied Sciences en Allemagne est, courant janvier, parue à ce sujet sur la plateforme ResearchGate. Elle attire l’attention sur les tares de l’utilisation des MOOCs 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 attire l’attention sur le fait 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 a particulièrement porté sur Virtual Programming Lab – un système automatisé d’évaluation sur lequel des plateformes de MOOCs comme Moodle s’appuient. Le fait est que l’outil est vulnérable aux attaques par injection de code, ce contre quoi la Lubeck University of Applied Sciences prévient : « 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. »
En l’état, les vulnérabilités des actuels systèmes automatisés d’évaluation sont assez criardes comme le relève l’étude. Tenez par exemple, avec la portion de code Java qui suit, un étudiant peut réussir à engranger le maximum de points à chacune de ses soumissions.
| Code Java : | Sélectionner tout |
1 2 | System.out.println("Grade :=>> 100"); System.exit(0); |
| 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; } |
| 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; } |
L’étude ne se veut pas être un recueil exhaustif des vulnérabilités que VPL exhibe, mais elle en a relevé deux autres. Par exemple, l’examinateur peut requérir une solution récursive au problème de dénombrement des occurrences d’un caractère au sein d’une chaîne. Dans ce cas, une solution de référence serait celle consignée dans le bout de code qui suit :
| 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); if (s.isEmpty()) return 0; char head = s.charAt(0); String rest = s.substring(1); int n = head == c ? 1:0; return n + countChar(c, rest); } |
| 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; } |
L’étude ne se limite pas à souligner les vulnérabilités de l’outil VPL. Elle dresse également un éventail de solutions pour les cas relevés. En sus, un template de test de programmes Java pour VPL est disponible sur le GitHub lié à l’étude.
Source : étude
Et vous ?
Qu’en pensez-vous ?
Les moocs sont-ils un moyen d'enseignement et d’évaluation trop superficiel par rapport au cours et aux TP traditionnels en informatique ?
Avez-vous déjà triché ou été confronté à de la triche d'une manière générale ?
Avez-vous des anecdotes à partager ?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
Vous avez lu gratuitement 9 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.