1 Présentation

1.1 Le package R exams

library("exams")
  • Un package vieux de 10 ans.




  • Porté par l’université des Sciences de Vienne (WU Wien) et l’université de Innsbruck.

  • Régulièrement mis à jour. Dernière mise à jour le 11 mai 2018. Version 2.3-1.

Principal contributeur: Achim Zeileis

Principal contributeur: Achim Zeileis

Un site web dédié:

http://www.r-exams.org/

Impression d’écran du site.

Impression d’écran du site.




  • De très nombreux formats de sortie:



  • Templates disponibles en au moins 16 langues



1.2 Objectifs du package R exams

  • Création de tests individualisés et correction automatisée (pour les QCM)
  • Gestion collective d’un grand ensemble d’exercices
  • Mise à disposition de ces exercices avec correction aux étudiants



1.3 Le fichier exercice

Chaque fichier exercice contient un unique exercice.

Le formatage des exercices est en

  • R/Markdown : Rmd
  • R/LaTeX Sweave : Rnw

et contient jusqu’à 4 éléments

  • Des paramètres de génération aléatoire (optionel)
  • La question
  • La solution (optionelle)
  • Des méta-informations



Il existe 4 types d’exercices.

schoice: Single-Choice
Task: Select the only correct item out of a list of alternatives.

Knowledge quiz: Arbitrary number of shuffled distractors (e.g., swisscapital).

Numeric exercises: Distractors are random numbers (from a set/interval) and/or typical arithmetic mistakes (e.g., deriv2, tstat2).

Shuffling (or subsampling) can be turned on or off.
mchoice: Multiple-Choice
Task: Select all correct items out of a list of alternatives.

Knowledge quiz: Arbitrary number of shuffled true or false statements (e.g., switzerland).

Interpretations: Numeric statements that are approximately correct or clearly wrong (e.g., boxplots, scatterplot, ttest).
num: Numeric
Task: Compute a single numeric value (within a tolerance interval).

Numeric exercise: Solving typical arithmetic problems often based on some random numbers (e.g., deriv, tstat).
string: Character String
Task: Enter the answer (exactly) as a character string.

Knowledge quiz: Sample a word/phrase from a given vocabulary or list of question/answer pairs (e.g., function, countrycodes).
cloze: Combinations of the Above

1.3.1 Exemples

En RMarkDown

Question
========
Quelle est la couleur du cheval blanc d'Henri IV?
Answerlist
----------
* Noir
* Gris
* Blanc
* Vous me prenez pour un imbécile
* Ravaillac

Solution
========
La réponse est 'blanc' et 'vous me prenez pour un imbécile'
Answerlist
----------
* False. 
* False.
* True.
* True.
* False.

Meta-information
================
exname: henriIV
extype: mchoice
exsolution: 00110
exshuffle: 4

exshuffle: 4 : mélange 4 des 5 réponses (avec au moins une réponse vraie).

En Sweave

<<echo=FALSE, results=hide>>=
## parameters
a <- sample(1:9, 1)
b <- sample(2:4, 1)
c <- sample(1:5, 1)
## solution
res <- a*b*(c^(b-1))
@
\begin{question}
Quelle est la dérivée de $f(x) = \Sexpr{a} x^{\Sexpr{b}}$,
en $x = \Sexpr{c}$?
\end{question}

\begin{solution}
On calcule la dérivée
\begin{eqnarray*}
f ' (x) & = & $f(x) = \Sexpr{a}\Sexpr{b} x^{\Sexpr{b} - 1}$
\end{eqnarray*}
puis on l'évalue en $x = \Sexpr{c}$.
\end{solution}

\extype{num}
\exsolution{\Sexpr{fmt(res)}}
\exname{derivative}
\extol{0.01}

La tolérance sur la réponse numérique est de 0.01.

2 Un premier exemple

On utilise la fonction ‘exams2pdf’ pour générer un pdf avec les exercices et leur correction.

library("exams")

myexam <- list(
  "tstat2.Rnw",
  "ttest.Rnw",
  "relfreq.Rnw",
  "anova.Rnw",
  c("boxplots.Rnw", "scatterplot.Rnw"),
  "cholesky.Rnw"
)

x <- exams2pdf(myexam)

exams_metainfo(x)

On peut ensuite générer des examens avec le code suivant

ex1 <- exams2nops(myexam, n = 2,
  dir = "nops_pdf", name = "demo", date = "2015-07-29",
  points = c(1, 1, 1, 2, 2, 3), showpoints = TRUE,
  replacement = TRUE, duplex = FALSE)

replacement = TRUE : on ajoute une feuille de réponse en plus duplex = FALSE : impression en mode verso.

3 QCM avec correction

Vous avez 10 min pour répondre aux 10 questions du test qui vous a été distribué !

myexam <- list("exo/exo_1.Rmd","exo/exo_2.Rmd","exo/exo_3.Rmd","exo/exo_4.Rmd","exo/exo_5.Rmd","exo/exo_6.Rmd","exo/exo_7.Rmd","exo/exo_8.Rmd","exo/exo_9.Rmd","exo/exo_10.Rmd")
exams2pdf(myexam)

exams2nops(myexam, n = 10,
              institution = "StateOfTheR. AgroParisTech",
              name = "Quizz", logo = file.path(getwd(), "StateOfTheR.png"),
              title = "Quizz de Noël", language = "fr", blank = 0,
              replacement = FALSE, duplex = FALSE, encoding = "UTF-8",
              dir = "nops_pdf"
              )

nops_scan(dir = "nops_scan")

ev1 <- nops_eval(
  register = "StateOfTheR.csv",
  solutions = "nops_pdf/Quizz.rds",
  scans = Sys.glob("nops_scan/nops_scan_*.zip"),
  eval = exams_eval(partial = FALSE, negative = FALSE),
  interactive = FALSE
)

La lecture des images scannées se fait avec la commande ‘noms_scan’ puis l’évaluation par ‘nops_eval’.

4 le TP : e-learning

5 Bibliographie

  • Présentation de Achim Zeileis eRum 2018.

https://eeecon.uibk.ac.at/~zeileis/papers/eRum-2018.pdf

  • Le site contient (entre autres) de nombreux exemples d’exerices

http://www.r-exams.org/

  • Vignette du package : version revue du papier JSS

https://cran.r-project.org/web/packages/exams/vignettes/exams.pdf

  • JSS paper

https://www.jstatsoft.org/article/view/v029i10