4 min read

GdT-Pyr 10 - Création de TDs, examens, QCMs avec R

L’objectif de ce document est de décrire les différents packages R permettant de créer des TDs, des examens, des QCMs etc…

Code complet: https://forgemia.inra.fr/gdtpyr/gdt_pyr/-/tree/main/GDT_PyR10_examensR

package learnr

install.packages("learnr")

learnr est un package R, développé par Rstudio, nécessitant l’installation de shiny et rmarkdown. En effet, learnr repose sur ces 2 packages, les examens sont écrits dans un document Rmarkdown et executés comme une appli shiny:

  • soit en le déposant sur un site web avec serveur R et Rshiny (shinyapps.io par exemple)
  • soit par execution en local:
  rmarkdown::run(paste0(getwd(),"/GDT_PyR10_examensR/Ex1_tutoR.Rmd"))

En executant la ligne ci-dessus, le tutoriel s’ouvre dans le viewer de Rstudio et peut être ouvert dans votre browser habituel.

Sur le site de learnr quelques exemples sont disponibles: https://rstudio.github.io/learnr/examples.html, avec leurs codes sous github.

Le lien suivant exercises décrit toutes les options des r code chunks possibles pour les exercices proposées aux étudiants:

  • exercise.cap: Caption for exercise chunk (defaults to “Code”)
  • exercise.eval: Whether to pre-evaluate the exercise so the reader can see some default output (defaults to FALSE).
  • exercise.lines: Lines of code for exercise editor (default to size of code chunk).
  • exercise.timelimit: Number of seconds to limit execution time to (defaults to 30).
  • exercise.checker: Function used to check exercise answers.
  • exercise.completion: Whether to enable code completion in the exercise editor.
  • exercise.diagnostics: Whether to enable code diagnostics in the exercise editor.
  • exercise.startover: Whether to include a “Start Over” button for the exercise.

A noter qu’un tutoriel n’est pas un simple fichier .Rmd mais un répertoire contenant le fichier .Rmd avec les fichiers adjacents (images, données etc…). A un tutoriel correspond un répertoire si on veut bien organiser ces examens!

Malheureusement, les tuto créés ne peuvent utiliser que le langage R, j’ai testé avec le package reticulate qui fonctionne très bien avec un .Rmd traditionel mais pas avec un .Rmd de learnr… Quel dommage!

Le présent répertoire contient un exemple produit avec learnr:

  • Ex1_tutoR.Rmd le rmarkdown contenant tous le code. Vous pouvez voir les mots-clés spécifiques utilisés dans les chunks.
  • Ex1_tuto.html: le TD produit avec le rmarkdown précédent.

Pour rappel, le html ne peut s’ouvrir tel quel (du moins, il nemontrera pas la structure learnr), il faut executer le .Rmd avec la commande suivante:

  rmarkdown::run(paste0(getwd(),"/GDT_PyR10_examensR/Ex1_tutoR.Rmd"))

package exams

install.packages("exams", dependencies = TRUE)

exams est un package R disponible sur le CRAN. Il permet de construire des examens de manière automatique au format markdown ou LaTeX et incluant des chunks de code R dynamique. Comme pour learnr les exercices peuvent être à choix multiples ou simples, des problèmes arithmétiques, du code…

Un examen exams a plusieurs sorties possibles:

  • fichiers autonomes : PDF, HTML, Docx, ODT, …
  • fichiers dynamiques: Moodle XML, QTI 1.2, QTI 2.1, Blackboard, Canvas, OpenOLAT, ARSnova, and TCExam
  • possibilité de scanner les feuilles d’examens imprimés et de les évaluer automatiquement: NOPS

Une autre option intéressante, pour réduire le risque de triche, exams propose un mécanisme de variations aléatoires des exercices:

  • mélange de l’ordre des questions
  • mélange des réponses possibles pour les QCMs
  • mélange des données des exercices

Vous pouvez voir quelques exemples, fournis par Bénédicte, dans le sous-répertoire fichiers Exam.

Exemple d’un examen

Hiérarchie des fichiers:

  • Test2019Q1.Rmd, Test2019Q2.Rmd, Test2019T.Rmd, Test2019Tension.Rmd: contiennent dans chaque fichier une question ou ensemble de questions
  • Test-exam-pdf.R: le script regroupant les questions ainsi que la structure de l’examen (questions ouvertes, fermées, à choix multiples, simple etc…)
  • pdf-exam1.pdf et pdf-solution1.pdf: le résultat de l’exécution du script précédent et donc ce que l’on donne aux étudiants

Exemple d’un examen sur l’ACP

Hiérarchie des fichiers:

  • ACP2019.Rmd: contient l’ensemble de questions
  • ACP-exam-pdf.R: le script regroupant les questions ainsi que la structure de l’examen (questions ouvertes, fermées, à choix multiples, simple etc…)
  • ACP-exam1.pdf et ACP-solution1.pdf: le résultat de l’exécution du script précédent et donc ce que l’on donne aux étudiants

Divers langages

Il est également possible de créer des quizzes très rapidement pour n’importe quel langage (ou thème). Les étudiants peuvent soit tester leurs connaissances chez eux pour s’entrainer soit faire un quizz en classe pour démarrer/finir une séance:

Session Informations

## R version 4.1.2 (2021-11-01)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19044)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252   
## [3] LC_MONETARY=French_France.1252 LC_NUMERIC=C                  
## [5] LC_TIME=French_France.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.8.0 
##  [5] magrittr_2.0.1  evaluate_0.14   blogdown_1.7    stringi_1.7.6  
##  [9] rlang_0.4.12    jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11 
## [13] tools_4.1.2     stringr_1.4.0   xfun_0.29       yaml_2.2.1     
## [17] fastmap_1.1.0   compiler_4.1.2  htmltools_0.5.2 knitr_1.37     
## [21] sass_0.4.0