archive

1/4h-1h

Est-on propriétaire des supports (numériques) de son cours à l’université ?

En matière de droits d’auteurs, il faut distinguer les droits moraux et les droits patrimoniaux. Ici, je vais essayer de résumer mes (petites) lectures (récentes – Oct 2013) sur la question de la propriété des pages/documents/supports numériques que l’on peut produire pour ses cours et mettre à la disposition des étudiants pour réaliser son enseignement (sur le web, des lms [ex. : Moodle], des plateformes de partages de documents, de vidéos, etc.). Ces créations de l’esprit sont-elles encore à moi, ou appartiennent-elles à l’université, éventuellement au public qui les as reçu ?

Pour comprendre la situation il faut lire la loi :

mais ce n’est pas suffisant ou assez clair, en particulier le code de l’éducation ne dit pas grand chose sur la question.

Il faut donc poursuivre la lecture, par exemple :

À force, il ressort de ces lectures (en privilégiant les plus sérieuses) que la position de l’enseignant du supérieur est la suivante (c’est l’exception dans l’exception) :

Le droit standard s’applique : l’enseignant du supérieur possède les droits moraux et patrimoniaux sur son œuvre.

Attention, à ne pas confondre avec la position de l’enseignement primaire ou secondaire, où la situation est moins favorable à l’enseignant (à partir du moment où il y a création et divulgation d’une œuvre dans le cadre d’un enseignement, les droits de l’enseignant sont restreints, en particulier, il n’a plus accès -quand cela a du sens- au droit de retrait).

Cela n’interdit pas des pratiques dans le supérieur où les œuvres sont propriétés de l’université, cela peut se faire via des contrats supplémentaires pour que l’université soit propriétaire de ces œuvres (ex. : http://www.univ-angers.fr/fr/vie-a-l-universite/services-numeriques/audiovisuel.html).

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, … ???

Depuis la rentrée 2010 je fais parti de l’équipe d’enseignants de l’UJF chargée de la formation des enseignants du secondaire intéressés par la prochaine spécialité informatique et sciences du numérique. Le programme pour la formation de ces enseignants est ambitieux d’autant plus que les moyens sont limités (et pourtant le volume horaire alloué à cette formation  est à Grenoble l’un des plus importants).

Au fil des semaines, apparaissent les programmes et documents officiels, en voici qlq un :

L’UJF s’est doté d’un texte explicitant ses démarches d’évaluation des enseignements par les étudiants : La qualité des formations et des enseignements-UJF (Version validée CEVU janvier 2012)

(texte finalisé cette année avec la commission d’évaluation des enseignements, pour ma huitième année de participation, pas mal pour la dernière (?!))

(original : 2009)

Comment faire un logiciel pour apprendre par cœur ?
Un logiciel qui permette de faire apprendre :
– du vocabulaire (orthographe)
– les tables d’arithmétiques (addition, multiplication)
– les poésies, ou du théâtre
– les conjugaisons
– des mots en langue étrangère (traduction)
– des dates de l’histoire
– des lieux (géographie)
– des règles de calculs, des théorèmes, des formules,
– des numéros de téléphone
– des codes Login-MotDePasse

Sur quoi un tel logiciel pourrait être fondé, quelles sont les techniques de l’apprentissage par cœur , sont-elles transposables en informatique ?

J’imagine un système qui prenne en compte les variables psychologiques sur la masse de données que l’on peut ingérer d’un coup, sur la fatigue des sujets, sur l’évolution des apprentissages au cours du temps, sur la mémoire, etc.

J’imagine un système qui propose la construction d’un réseau autours de l’information à apprendre, réseau sémantique, ou syntaxique ou phonétique … un réseau sonore, visuel, et/ou gestuel selon les méthodes/facilités de l’individu.

J’imagine un système qui étudie les réponses de l’apprenant pour évaluer ce qu’il a appris et comment pour lui proposer la méthode la plus appropriée et la masse de choses à apprendre la plus juste.

J’imagine des  questionnaires a trou, des qcm, des indices (images floutée, ou parasité, lettre dans le désordre, images, sons, …)

et j’aimerai bien un système dont un premiere prototype puisse ce programmer en quelques jours (2 ou 3 week-end)

Denis.

ps : j’espère ne pas être en retard sur les études en psychologie/didactique/pédagogie qui ont essayer de dépasser l’apprentissage par cœur (au profit d’apprentissage plus intelligent :par la découverte, par la construction, par le projet, etc.) ni être réactionnaire, il me semble qu’il y a de la place pour toutes ces formes d’apprentissage, et que l’apprentissage par cœur est adéquate pour certains.

 

(à suivre, plutôt que des commentaires, les suites de la réflexion)

(rédaction initale en Juin 2007)

Quelle surprise il y a quelques semaines quand j’ai cherché sur le web si, par hasard, il existait un interpréteur C écrit en javascript qui pourrait tourner dans une fenêtre web. Bon, pour l’insant je n’ai pas trouvé ce que je voulais (j’ai tout de même fait connaissance avec CINT (http://root.cern.ch/root/Cint.html) et Ch (http://www.softintegration.com/), et c’est déjà une bonne chose), mais j’ai découvert plein d’autres langages possédant sur le web un interpréteur javascript (ou au moins une version web), en particulier ProLog ! :

par ordre alphabétique (pour les plus connus) :

quelques uns moins connus :

et enfin, quelques interpréteurs de pseudo-code :

(et il y a aussi des machines amiga / zx / hp / Apple II / … qui sont émulées et des langages visuels Lily, … )

d’autres : http://del.icio.us/search/?all=javascript%20interpreter (ou faire une requête interpreter in javascript)
Attention : il s’agit bien de langage interprété par javascript, et pas le contraire (il y a aussi beaucoup d’interpréteur de javascript dans des langages différents et variés, en particulier en C)

Associé à un éditeur texte web un peu performant, j’imagine des pages possédant un editeur de texte, un interpreteur, et un peu de logique pour analyser/diagnostiquer les productions d’élèves, cela donnerait une page web facile à intégrer à toute plateforme de e-learning et aussi puissante que les rares LispTutor (Elm-Art : http://www.psychologie.uni-trier.de/projects/ELM/elmart.html), et autres rares tuteurs disponibles sur le web (pour un coût beaucoup moindre) …  J’imagine même des composants génériques pour le diagnostic/analyse des langages de programmation.

Pour les éditeurs web de textes, il y a ce qu’il faut sur le web :

Il reste à produire les outils d’analyse/diagnostic génériques et lier le tout … (le tout en javascript, biensur)

Bien à vous,
Denis.

ps : Si quelqu »un connait un autre interpréteur javascript d’un langage, qu’il l’ajoute, en particulier pour C, je cherche encore. Et si vous avez des exemple de pages web ou des interpréteurs sont utilisées à des fins éducatives, je suis aussi interressé.

MAJ 2012  :

Pour ARM, voila un début d’interptéteur écrit en javascript : http://bdenis.pbworks.com/w/page/50436980/mini%20interpreteur%20ARM

Pour le projet de plateforme d’edition, d’interprétation, d’analyse de code voila : http://edba.imag.fr