Passer au contenu principal

Utiliser des jeux de données dans Moodle

De quoi s'agit-il ?

Cette nouvelle fonctionnalité permet l'utilisation de jeux de données dans un cours Moodle. Il est ainsi possible d'afficher du contenu différent – que cela soit dans des questions d'une activité Test ou dans d'autres activités Moodle – à différents utilisateurs. Chaque jeu de données est associé aux étudiant·e·s, en fonction de leur appartenance à un  groupe dans le cours Moodle. On peut ainsi par exemple facilement créer un grand nombre de questions différentes et afficher une version différente de chaque question à chaque utilisateur, sans avoir à effectuer tout le travail manuellement.

Cette nouvelle fonctionnalité de Moodle a été développée par le Centre de Soutien à l'Enseignement à l'Université de Lausanne suite à une demande émanant d'un enseignant. Elle est désormais disponible à l'ensemble de la communauté, et a de même été rendue publique : ainsi, tous les utilisateurs de Moodle – à l'UNIL ou ailleurs – peuvent ajouter cette fonctionnalité à leur plateforme et en bénéficier.

Dans le cas pour lequel cette fonctionnalité a été développée initialement, il s'agissait de créer une série de 10 activités Test utilisées en contrôle continu, chaque Test devant contenir 10 questions à choix multiple (QCM) – soit 100 questions au total. Or, il était nécessaire que chaque étudiant se voie présenter, pour chacune de ces 100 questions, une mouture différente de la même question. L'enseignement concernant 100 étudiants, Il aurait donc fallu créer 10'000 questions différentes !

Il a donc été choisi de créer 10 activités Test contenant chaque 10 questions, et de permettre à chaque question d'afficher un contenu différent selon l'utilisateur visionnant la question. Ceci permet de simplifier la création des activités Test, et d'utiliser un système permettant de définir, pour chaque question, une "mouture" différente. Pour ce faire, des jeux de données ont été créés, à raison d'un par étudiant.

Sans cette fonctionnalité il faudrait créer une question par utilisateur.rice avec à chaque fois un changement mineur (ce qui, dépendant le nombre d’étudiant.e.s et la longueur du Test, peut monter à plusieurs milliers de questions à créer), alors qu’avec cette fonctionnalité il suffit de créer le nombre de questions que comporte le Test (par exemple 10) et, pour chaque utilisateur.rice, la question s’affichera avec un contenu légèrement différent selon la personne qui la visionne. Ceci permet de simplifier la création des activités Test, et d'utiliser un système permettant de définir, pour chaque question, une "mouture" différente. Pour ce faire, des jeux de données ont été créés, à raison d'un par étudiant.e.

Exemple :

Jeu de données 1 : 

  • question : quelle est la capitale de la Suisse ?
  • réponse 1 : Berne
  • réponse 2 : Zurich

Jeu de données 2 : 

  • question : quelle est la capitale de l'Allemagne ?
  • réponse 1 : Berlin
  • réponse 2 : Bonn

Nous observons dans l'exemple ci-dessus que ces deux questions sont de la même forme. Nous pourrions donc les créer dans des jeux de données distincts, puis demander au Test Moodle d'afficher la question correspondant à l'utilisateur concerné. Plutôt que de créer 100 questions presque identique (pour 100 étudiant·e·s différents), il suffit alors de créer une question et d'indiquer à Moodle quelle "mouture" de la question afficher à chacun·e.


Comment procéder ? 

  • Créez une activité de type "Base de données" dans un cours et rendez-la inaccessible aux étudiants. Il n'est pas nécessaire qu'elle soit indisponible, mais cela permet d'éviter la falsification ou l'accès non désiré aux données. Le nom de l'activité de base de données ne peut contenir que des lettres non accentuées majuscules ou minuscules, des chiffres, et les caractères "-" et "_"., comme par exemple "jeux_de_donnees".
  • Créez-y les champs suivants :
    • Texte court du nom de "datasetname" – ceci permet d'identifier le jeu de données ;
    • Texte court du nom de "itemname" - ceci permet d'identifier un élément, qui se retrouvera dans tous les jeux de données – dans notre exemple ci-dessus ceci sera le nom de la question ;
    • Autant de champs de texte court que nécessaire – ceux-ci sont les propriétés de l'élément dans le jeu de données ; ces champs doivent être nommés selon la même règle que le nom de la base de données : chiffres, lettres, "-" ou "_" – dans l'exemple ci-dessus nous aurions par exemple "texte_question", "reponse1" et "reponse2" ;
  • Créez ensuite dans la Base de données autant d'enregistrements que nécessaire. Pour reprendre l'exemple ci-dessus, il faudrait créer 2 fiches :
    • fiche 1 :
      • datasetname : A
      • itemname : question1
      • texte_question : quelle est la capitale de la Suisse ?
      • reponse1 : Berne
      • reponse2 : Zurich
    • fiche 2 :
      • datasetname : B
      • itemname : question1
      • texte_question : quelle est la capitale de l'Allemagne ?
      • reponse1 : Berlin
      • reponse2 : Bonn
  • Il est cependant préférable de créer ces jeux de données dans un logiciel tiers (par exemple dans un tableur Excel), puis d'utiliser la fonction "Importer des fiches" pour importer un fichier CSV. Pour ce faire, le fichier doit être formulé comme suit, avec le nom des champs dans la première ligne, puis une ligne par fiche :
datasetname itemname texte_question reponse1 reponse2
A question1 quelle est la capitale de la Suisse ? Berne Zurich
B question1 quelle est la capitale de l'Allemagne ? Berlin Bonn
[ ... etc ... ]



  • Créez des groupes dans le cours pour la correspondance entre l'utilisateur et l'ensemble de données ; ces groupes doivent être nommés "dataset_<nom du je de données>", donc dans notre exemple "dataset_A" et "dataset_B". Ajoutez ensuite des étudiants à un groupe afin de les relier à un jeu de données.
  • Lorsque vous souhaitez afficher le contenu de l'ensemble de données d'un utilisateur, utilisez la syntaxe suivante : `{{nom_activité_de_la_base_de_données:nom_de_l'élément:nom_du_champ}}`. Dans notre exemple, on peut alors ne plus créer pour la "question1" qu'une seule question, formulée de la manière suivante :

Texte de la question : {{jeu_de_donnees:question1:texte_question}}
Réponse 1 : {{jeu_de_donnees:question1:reponse1}}
Réponse 2: {{jeu_de_donnees:question1:reponse2}}


Résultat :

En ne créant qu'une seule question, un utilisateur faisant partie de groupe "dataset_A" voit la question portant sur la Suisse et un utilisateur faisant partie du groupe "dataset_B" voit la question portant sur l'Allemagne.

Plus le nombre de jeux de données et de questions est important, plus il est possible de faire des économies de temps. De plus, le fait d'automatiser le processus permet de s'affranchir d'un grand nombre de sources d'erreur.

Le CSE peut vous accompagner lors de la mise en place de jeux de données dans votre enseignement. Pour toute information supplémentaire, veuillez prendre contact avec l'équipe de support du CSE à l'adrresse elearning@unil.ch .











  • Par exemple, pour utiliser l'élément nommé "item1" et afficher le champ "data1" de l'ensemble de données actuel de l'utilisateur, en utilisant les ensembles de données définis dans l'activité de base de données nommée "datasets", la syntaxe serait la suivante :

    {{datasets:item1:data1}}
    Cela permettrait d'afficher la valeur "data1" du même élément à différents utilisateurs, en extrayant les données de l'ensemble de données contenant le nom du groupe de l'utilisateur.

Exemple : Utilisation d'un ensemble de données pour des questions de type QCM

Vous pouvez commencer par créer une activité de base de données dans un cours et configurez-la pour qu'elle ne soit pas accessible aux étudiants puis créez les champs suivants:

  • datasetname : texte court
  • questionname : texte court
  • questiontext : zone de texte
  • answer1 : texte court
    ...
    answerN : texte court

Ensuite, utilisez la fonction d'importation de l'activité de la base de données pour importer un fichier CSV formulé comme suit, en utilisant des guillemets si nécessaire :
datasetname ; questionname ; "questiontext" ; réponse1 ;.. ; réponseN
Pour chaque jeu de données, il doit y avoir `n` questions. S'il y a `m` ensembles de données, il y aura `n*m` enregistrements dans le fichier CSV.

Vous pouvez ensuite créer des groupes au sein du cours pour la correspondance entre l'utilisateur et le jeu de données ; ces groupes doivent être nommés `questiondata_datasetname` (nom du jeu de données). Pensez bien à ajouter des étudiants à un groupe, afin de les lier à un ensemble de données.
Créez `n` questions de quiz en utilisant la syntaxe suivante, qui peut être utilisée dans le texte de la question, les questions réponses dans les questions à choix multiples mais pas dans une réponse courte ou une réponse calculée:
`{{questiondata:nom de la question:champ de la base de données}}`
Par exemple, pour utiliser la question nommée "question1" et afficher le champ "texte de la question", le résultat serait le suivant :`{{questiondata:question1:questiontext}}`

Dans le cas d'un QCM, pour la réponse 1 proposée, la syntaxe serait :`{{questiondata:question1:answer1}}`

L'utilisation décrite dans cet exemple permet d'afficher la même "question1" à tous les utilisateurs, mais en extrayant la description de la question ("texte de la question") et les réponses proposées ("réponse1" à "réponseN") de l'entrée d'activité de la base de données correspondant à l'ensemble de données attribué à l'utilisateur.