The solution is entirely based on the R package\\ \href{https://cran.r-project.org/web/packages/exams/index.html}{exams: Automatic Generation of Exams in R}\\[3mm]
{\it
sources:
\begin{itemize}
\item \cite{Zeileis2009}
\item \cite{Zeileis2014}
\item see also: \cite{zeileis_rexams_nodate}
\end{itemize}
}
\centerline{Big thanks to the author: Zeileis, Achim for his work!}
\end{frame}
\begin{frame}[fragile]
\frametitle{Required tools}
\begin{columns}[T] % align columns
\begin{column}{.48\textwidth}
Either
\vspace{5mm}
\begin{enumerate}
\item A \href{https://www.latex-project.org/}{\LaTeX} version installed on your laptop or via a browser
\begin{itemize}
\item Windows : \href{https://miktex.org/}{MiKTex} or \href{https://tug.org/texlive/}{TeX Live}
\item Linux : \href{https://tug.org/texlive/}{TeX Live}
\item Mac : \href{https://tug.org/mactex/}{MacTeX}
\end{itemize}
\item The software \href{https://www.r-project.org/}{R}
\end{enumerate}
\end{column}%
\hfill%
\pause
\begin{column}{.48\textwidth}
Or simply via
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=true]
{A browser}
\href{https://posit.cloud}{Posit Cloud} (ex RStudio Cloud)
\end{beamerboxesrounded}
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Create an account on \href{https://posit.cloud}{Posit Cloud} if you don't have \LaTeX and R.
\end{beamerboxesrounded}
\end{column}%
\end{columns}
\end{frame}
\begin{frame}
\frametitle{The proposed solution}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=false]
{The template}
The \href{}{template}, licensed under \href{https://creativecommons.org/licenses/by-sa/4.0/}{\ccbysa}, contains the possible question options.
The compressed file contains everything you need, according to the structure below.
{\it\textcolor{vertmoyen}{extol}} & accuracy of numerical questions\\
{\it\textcolor{vertmoyen}{expoints}} & number of points per answer
\end{tabular}
\end{beamerboxesrounded}
}
\end{frame}
% !TeX root = ../teach.Moodle.Latex.R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Pastille %%
%% Questions %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conception : Questions}
\begin{frame}
\frametitle{Questions: principles}
\begin{itemize}
\item In a statement file, several questions can be asked.
\item Questions are of one of the following types: "schoice", "mchoice", "num" or "string".
In the case of a "schoice" or "mchoice" type, the answer is coded as a string of characters 0 and 1.
\item Following the question text in the "itemize" environment, the keyword {\it\textcolor{vertmoyen}{\#\#ANSWER?\#\#}} must be placed to indicate that an answer is expected.
The "{\it\textcolor{vertmoyen}{?}}" indicates the question number.
\item The following command should finally be placed just before the end of the "question" environment in a chunk.\\
It generates spaces for the student to give his answer.\\
The difference is that several options must be validated,\\
i.e. "option 1" "option 3" "option 5".
\end{beamerboxesrounded}
\end{frame}
%\begin{frame}
% \frametitle{Your turn!!}
% \begin{columns}[T] % align columns
% \begin{column}{.48\textwidth}
% \begin{beamerboxesrounded}%
% [scheme=CommandeGrise, shadow=false]
% {Exercise}
% Create a "schoice" type question asking you to select the capital of a canton,
% whose name is drawn at random from a \href{https://www.travailler-en-suisse.ch/villes-et-cantons-suisses.html}{list of cantons}.
% \begin{itemize}
% \item The .R file has already been created, as well as the data file
% \item Modify the \textcolor{vertmoyen}{lines 44-45} in the file "formation\_qcm\_canton.Rnw"
% \end{itemize}
% \end{beamerboxesrounded}
% \end{column}%
% \hfill%
% \begin{column}{.48\textwidth}
% \begin{beamerboxesrounded}%
% [scheme=CommandeGrise, shadow=false]
% {Exercise}
% Create an "mchoice" question asking you to select the cantons where \href{https://fr.wikipedia.org/wiki/Canton_(Switzerland)}{French} is an official language.
% \begin{itemize}
% \item The .R file has already been created, as well as the data file
% \item Modify \textcolor{vertmoyen}{lines 51-52} in the file "formation\_qcm\_canton.Rnw"
The number of points $n_i$ per answer $i$ has been specified. Changing the total number of points $N$ for an exercise means assigning a number of points proportional to $n_i$.
\end{beamerboxesrounded}
\end{frame}
%\begin{frame}[fragile]
% \frametitle{Your turn!}
% \begin{beamerboxesrounded}%
% [scheme=CommandeGrise, shadow=false]
% {Exercise}
% Use your production to create a test activity.\\
% \begin{enumerate}
% \item Generate 3 versions to create the XML file.
% \item Import your file into the question database...
% \item Create a test activity consisting of your 3 questions (use Random Questions).
% \item Change the number of points to 2 for the question on Swiss cantons.
Cyberlearn/Moodle ne permet pas d'utiliser des fonctions avancées avec des données générées aléatoirement pour formuler des questions pour un exercice.
\end{beamerboxesrounded}
\vspace{3mm}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Essayez de calculer la variance d'un ensemble de nombres générés aléatoirement dans une question de l'activité "Test"
\end{beamerboxesrounded}
\begin{itemize}
\item Comment concevoir ce type de questions ou d'autres plus évoluées ?
\item Comment généraliser la production de questions avec des données distinctes pour \\
\begin{itemize}
\item driller : des exercices identiques mais avec des paramètres numériques (nombres, fonctions, ...) distincts
\item examen : des valeurs différentes pour chaque étudiant (minimiser le risque de triche)
\item Générer le tout dans un fichier importable dans la banque de question de Moodle/Cyberlearn
\item Moodle/Cyberlearn : concevoir une activité "Test"
\end{enumerate}
\end{beamerboxesrounded}
\vspace{5mm}
{\scriptsize\it Image provenant de \href{https://pixabay.com/}{https://pixabay.com/}}
\end{frame}
\begin{frame}
\frametitle{Pré-requis}
\begin{itemize}
\item Moodle/Cyberlearn : construction d'une activité \href{https://docs.moodle.org/4x/fr/Test}{"Test"}
\item {\it Connaissances souhaitables :}
\begin{itemize}
\item \href{https://www.r-project.org/}{R} : notions élémentaires du langage
\item \href{https://www.latex-project.org/}{\LaTeX} : notions de base
\end{itemize}
\end{itemize}
\end{frame}
% !TeX root = ../teach.Moodle.Latex.R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Pastille %%
%% Solution %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Solution}
\begin{frame}
\frametitle{Reconnaissance du travail}
La solution est entièrement basée sur le paquetage R\\ \href{https://cran.r-project.org/web/packages/exams/index.html}{exams: Automatic Generation of Exams in R}\\[3mm]
{\it
sources:
\begin{itemize}
\item \cite{Zeileis2009}
\item \cite{Zeileis2014}
\item voir aussi : \cite{zeileis_rexams_nodate}
\end{itemize}
}
\centerline{Un grand merci à l'auteur : Zeileis, Achim pour son travail !}
\end{frame}
\begin{frame}[fragile]
\frametitle{Outils nécessaires}
\begin{columns}[T] % align columns
\begin{column}{.48\textwidth}
Soit
\vspace{5mm}
\begin{enumerate}
\item Une version \href{https://www.latex-project.org/}{\LaTeX} installée sur votre laptop ou via un browser
\begin{itemize}
\item Windows : \href{https://miktex.org/}{MiKTex} or \href{https://tug.org/texlive/}{TeX Live}
\item Linux : \href{https://tug.org/texlive/}{TeX Live}
\item Mac : \href{https://tug.org/mactex/}{MacTeX}
\end{itemize}
\item Le logiciel \href{https://www.r-project.org/}{R}
\end{enumerate}
\end{column}%
\hfill%
\pause
\begin{column}{.48\textwidth}
ou alors simplement via
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=true]
{Un butineur}
\href{https://posit.cloud}{Posit Cloud} (ex RStudio Cloud)
\end{beamerboxesrounded}
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Créez un compte sur \href{https://posit.cloud}{Posit Cloud} si vous n'avez pas \LaTeX et R.
\end{beamerboxesrounded}
\end{column}%
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Le Graal !}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=false]
{Le template}
Le \href{}{template}, sous licence \href{https://creativecommons.org/licenses/by-sa/4.0/}{\ccbysa}, contient les options de questions possibles.
Le fichier compressé contient tout le nécessaire selon la struture ci-dessous.
Il contient l'énoncé, les questions, les solutions et le feedback global (= le corrigé)\\
\pause
\item Le script : ./R/*.R\\
Il permet la génération de données aléatoires ou la lecture d'un fichier statique. Il contient aussi tous les calculs que vous souhaitez faire.
\pause
\item La donnée générée : ./data/*.csv\\
Le format {\it csv} est celui d'un fichier tabulaire. Vous pouvez bien entendu générer d'autres types de fichiers (i.e. {\it *.txt}, {\it *.xlsx}, ...)
\pause
\item Les figures./fig/*.*\\
Vous pouvez générer des figures de plusieurs types : {\it *.png}, {\it *.pdf}, ...
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Posit Cloud: Importer le template zippé}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
\begin{enumerate}
\item Depuis votre compte \href{https://posit.cloud}{Posit Cloud}, créez un projet que vous nommez Template
\item Depuis ce projet, "Upload" le fichier zippé.
\includegraphics[scale=0.3]{positUpload.png}
\end{enumerate}
\end{beamerboxesrounded}
\end{frame}
\begin{frame}
\frametitle{Exécution du template}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
\begin{enumerate}
\item Cliquez sur "exo.Moodle.template.R"
\item Sélectionnez les lignes 1 à 27 et exécutez les commandes (CTRL-Enter ou bouton Run).
\item Ligne 25, remplacez "n = 1" par "n = 2" et exécutez la ligne 20.\\
Que se passe-t-il pour les questions 3 et 4 et la solution/feedback ?
\end{enumerate}
\end{beamerboxesrounded}
\end{frame}
% !TeX root = ../teach.Moodle.Latex.R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Pastille %%
%% main %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conception : Main}
\begin{frame}
\frametitle{La cheffe d'orchestre}
Le fichier {\it\textcolor{vertmoyen}{exo.Moodle.template.R}} est la cheffe d'orchestre.
Son but est
\begin{itemize}
\pause
\item d'indiquer où se trouvent les fichiers
\begin{itemize}
\item énoncés (i.e. *.Rnw)
\item composition de données et calculs (i.e. *.R)
\item l'output généré (*.xml ou *.pdf)
\item images éventuelles
\item donnnées statiques éventuelles
\end{itemize}
\pause
\item d'initialiser le germe des nombres aléatoires à générer
\pause
\item de générer le résultat (i.e. HTML ou XML)
\end{itemize}
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeRouge, shadow=false]
{Explication}
{\it\textcolor{vertmoyen}{exo.Moodle.template.R}} doit être exécuté pour produire le résultat.
{\it\textcolor{vertmoyen}{extype}} & cloze permet des questions de différents types\\
{\it\textcolor{vertmoyen}{exsolution}} & calcul de la solution\\
{\it\textcolor{vertmoyen}{exname}} & nom de l'exercice\\
{\it\textcolor{vertmoyen}{exsection}} & nom/création d'un répertoire\\
{\it\textcolor{vertmoyen}{extol}} & précision des questions numériques\\
{\it\textcolor{vertmoyen}{expoints}} & nombre de points par réponse
\end{tabular}
\end{beamerboxesrounded}
}
\end{frame}
% !TeX root = ../teach.Moodle.Latex.R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Pastille %%
%% Questions %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conception : Questions}
\begin{frame}
\frametitle{Questions : principe}
\begin{itemize}
\item Dans un fichier d'énoncé, plusieurs questions peuvent être posées.
\item Les questions sont de l'un des types suivants :
\begin{itemize}
\item "schoice",
\item "mchoice",
\item "num",
\item "string"
\end{itemize}
Dans le cas d'un type "schoice" ou "mchoice", la réponse est codée sous forme de chaîne de caractères 0 et 1.
\item Suite au texte de la question dans l'environement "itemize", le mot clé {\it\textcolor{vertmoyen}{\#\#ANSWER?\#\#}}
doit être placé afin d'indiquer qu'une réponse est attendue.\\
Le "{\it\textcolor{vertmoyen}{?}}" indique le numéro de la question.
\item La commande suivante doit finalement être placée juste avant la fin de l'environnement "question" dans un chunk. Elle est utile pour préparer les réponses aux questions.\\
La différence est que plusieurs options doivent êtres validées,\\
i.e. "option 1" "option 3" "option 5".
\end{beamerboxesrounded}
\end{frame}
\begin{frame}
\frametitle{A vous !}
Les fichiers formation\_qcm\_comptabilite.* ont déjà été créés.\\
Adaptez ces fichiers pour générer plusieurs versions des questions.
\vspace*{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice : Valeur Actuelle Nette}
Utilisez un générateur de nombres aléatoires.
\begin{itemize}
\item la variable {\it van.investment} prend une valeur aléatoire entière comprise entre 40'000 et 60'000\\
Aide : la commande \textit{sample(4:6, size = 1)} permet d'obtenir un nombre aléatoire entre 4 et 6.
\item la variable {\it van.rate} prend une valeur aléatoire parmi 0.06, 0.07 et 0.08
\end{itemize}
\end{beamerboxesrounded}
\vspace*{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice : Rôle de l'amortissement}
Modifiez l'ordre des réponses (type "mchoice").
\end{beamerboxesrounded}
\end{frame}
\begin{frame}
\frametitle{A vous : prêts pour le challenge ?}
\begin{columns}[T] % align columns
\begin{column}{.48\textwidth}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Créez une question de type "schoice" demandant de sélectionner le chef lieu d'un canton, dont le nom est tiré au hasard à partir d'une \href{https://www.travailler-en-suisse.ch/villes-et-cantons-suisses.html}{liste de cantons}.
\begin{itemize}
\item Le fichier .R a déjà été créé, ainsi que le fichier de données
\item Modifiez les \textcolor{vertmoyen}{lignes 44-45} du fichier formation\_qcm\_canton.Rnw
\end{itemize}
\end{beamerboxesrounded}
\end{column}%
\hfill%
\begin{column}{.48\textwidth}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Créez une question de type "mchoice" demandant de sélectionner les cantons dont le \href{https://fr.wikipedia.org/wiki/Canton_(Suisse)}{français est une langue officielle}.
\begin{itemize}
\item Le fichier .R a déjà été créé, ainsi que le fichier de données
\item Modifiez \textcolor{vertmoyen}{lignes 51-52} du fichier formation\_qcm\_canton.Rnw
Les données ont été générées dans le script *.R (i.e. la matrice "dat") ainsi que le numéro de la ligne (i.e. "selectedindex")
\end{beamerboxesrounded}
\end{frame}
\begin{frame}
\frametitle{A vous !}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Créez une question de type "string" demandant de le code de 3 lettres représentant un pays selon la norme ISO 3166-1 alpha-3 , tiré aléatoirement parmi une liste de pays.\\
\vspace{3mm}
Une liste est disponible sous\\ \href{https://en.wikipedia.org/wiki/ISO\_3166-1\_alpha-3}{https://en.wikipedia.org/wiki/ISO\_3166-1\_alpha-3}
\begin{itemize}
\item Créez le fichier de script *.R\\
\item Créez le fichier d'énoncé *.Rnw\\
Attribuez 1 point à cette question.
\end{itemize}
\end{beamerboxesrounded}
\end{frame}
% !TeX root = ../teach.Moodle.Latex.R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% Pastille %%
%% Test %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conception : Activité Test (Moodle)}
\begin{frame}
\frametitle{Activité test : \'Etapes}
\begin{enumerate}
\item RStudio/Posit : exportez en XML par la commande {\it\textcolor{vertmoyen}{exams2moodle()}}, avec
\begin{itemize}
\item le nom souhaité (name = ...)
\item le nombre de versions (n = ...)
\end{itemize}
\item Moodle : Importez le fichier obtenu dans la banque de questions
\item Moodle : Insérez une activité Test
\setbeamertemplate{enumerate items}[default]
\begin{enumerate}
\item Ajoutez les "questions"/exercices, de type aléatoires
\item\label{points} Eventuellement rectifiez le nombre (total) de points par exercice
\end{enumerate}
\setbeamertemplate{enumerate items}[circle]
\item Moodle : Finalisez le paramétrage (si évaluation notée)
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Activité test : \'Etape 3.2}
\begin{beamerboxesrounded}%
[scheme=CommandeRouge, shadow=false]
{Explication : nombre de points}
Le nombre de points $n_i$ par réponse $i$ a été spécifié. Changer le nombre total de points $N$ d'un exercice revient à attribuer un nombre de points proportionnel à $n_i$.
\end{beamerboxesrounded}
\end{frame}
\begin{frame}[fragile]
\frametitle{A vous !}
\begin{beamerboxesrounded}%
[scheme=CommandeGrise, shadow=false]
{Exercice}
Utilisez votre production pour créer une activité test.\\
\begin{enumerate}
\item Générez 3 versions pour créer le fichier XML.
\item Importez votre fichier dans la base de questions..
\item Créez une activité test composée de vos 3 questions (utilisez Question Aléatoires).
\item Modifiez le nombre de points à 2 pour la question sur les cantons suisses.
Sur ce principe, une base de questions initiales pour les statistques est mise à disposition sous licence \href{https://creativecommons.org/share-your-work/cclicenses/}{\ccbysa}.
\vspace{5mm}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=true]
{Demande}
Contribuez à son expansion afin que tous nous en profitions !
\end{beamerboxesrounded}
\end{frame}
\begin{frame}
\frametitle{Attestation didactique}
\begin{beamerboxesrounded}%
[scheme=CommandeVerte, shadow=false]
{Condition de réussite}
Participation à l'atelier "Contribution OER"
selon votre domaine de compétences et évaluation positive.