Creating and maintaining question banks in Canvas sucks, but
examiner
makes it suck less.
Multiplying the learning benefits of an exercise was the initial
motivation for examiner
. By randomizing key aspects of the
exercise, students get to practice a skill over and over with questions
that feel fresh even though they are just variations over a theme,
i.e. a single Rmd file. Question banks are a perfect fit for mass
generation of exercises. However, they cannot be exported from Canvas
nor imported from external files, nor is there an API for question
banks.
examiner
manipulates question banks via
library(selenider)
, an R package for remote control of a
web browser. Once you log in to Canvas, examiner
will click
buttons and type text into boxes while you get a well deserved
coffee.
However, a couple of words of warning:
Anything to do with question banks is slow. That’s because we regularly need to open the question banks web page and wait for it to render, and because some elements on the page are slow to respond.
If you’re running an ad blocker, it may prevent
library(selenider)
from remote-controlling its
browser. Either turn the ad blocker off while using
examiner
with question banks, or add an exception for
“localhost” (https://127.0.0.1). In Ublock Origin, it goes like this:
Click the Ublock button, then the gears icon (“Open the dashboard”),
then “My filters”, and add the line @@127.0.0.1
(indicating
an exception).
Using question banks in an examiner
quiz
In the questions
field of the YAML header, append a
pick/from
text like 3/50
after the Rmd file
name. It means to insert a question
group picking 3
questions from a bank of
50
realizations of that Rmd file. If the question bank does
not already exist, examiner
will create it for you.
Here’s a complete example of what the quiz file could look like (with very few realizations so the example won’t take forever to run):
And here’s what randomized_question.Rmd
could look
like:
When knitting a test which uses question banks, a dialog box will appear asking you to log in to Canvas. Once you do, the rest of the interaction with the Canvas interface will be automatic.