Standard vs. Adaptive Quizzes
Currently, there are two ways of administering a quiz. The standard (i.e. traditional) way is to make the user answer all questions before any feedback is given. (Optionally, you can allow them to re-take the quiz.) The other method is called "adaptive", and this allows the user to submit and receive feedback on each question, one at a time. Additionally, you can allow any number of attempts at the same question, with custom feedback for each wrong answer (the more attempts which are taken to answer a question correctly, the less that question is worth).
The standard way is nice and straightforward, but the adaptive method makes things a little trickier in development, as the "question states" become more complex (i.e. unanswered, answered once, answered twice, right/wrong etc.).
Certainty-Based Marking
An addition is soon to be made to the quiz: certainty based marking. This is quite a popular idea apparently, and makes the student state how certain they are of their answer. This not only offers the chance for in-quiz reflection on their own learning, but also allows the grade to be more appropriately assigned. For example, if a student is very confident then they gain or lose a lot of marks if they are correct or incorrect respectively. A lack of confidence will reduce the marks gained or lost.
Certainty-based marking confused me a little at first, but after a while I began to see its benefits. Anybody can guess their answers and just be lucky, but adding the certainty element will (hopefully) penalise those who just guess, and favour those who have worked hard. Although admittedly, it will make the Sloodle quiz chair even more complicated!
The Components
There are several components to the quiz. First of all the question bank (or question engine, or pool, or whatever) stores the list of questions for the entire site. These can be categorised, and shortly there are to be some new permissions settings to prevent people from accessing the shared pool of questions when they're not supposed to (e.g. students whose assignment is to write a quiz question). Increasing the searchability of the question bank is a high priority.
Each question has a question type (e.g. multiple choice, short answer etc.), and the type is responsible for rendering each question to HTML, and for handling/reporting the grades. It should be noted that question types are plugins, and therefore it is fairly easy to develop, integrate, and distribute your own types. The creation of new types is a fairly high priority.
The question importers/exporters are hopefully fairly self-explanatory... they allow the import/export of questions from/to certain file formats. And of course, the quiz itself gathers together and administers a batch of questions, drawn from the question bank.
A Question
Here are the properties of a question:
- Has a definition (i.e. content and marking scheme)
- Has a state (e.g. open/closed)
- Can be rendered as HTML
- Can take a list of values as input from the user
In non-adaptive mode, the state of each question (on a per-user per-quiz basis) is as follows:

And here is the equivalent for adaptive mode:

I don't think the adaptive diagram is exactly as it was presented at the conference, but it gives the rough gist -- after saving a question and having it graded, to user can (where applicable) go back and try again. The number of available re-attempts is entirely at the educator's discretion.
Note that adaptive/non-adaptive modes are selected on a per-quiz basis, so the same question could behave adaptively in one quiz, and non-adaptively in another. The states themselves are stored in the "question_states" table, while the constants to identify each state are stored in "lib/questionlib.php".
Plug-in Points
- Question types
- Question import/export
- Quiz reports
As I mentioned above, question types can be customized using the plug-in system. In addition to this, custom importers/exporters can be written, and also different quiz reports (I think to date there is a grand total of 1 quiz report plug-in... maybe because nobody knows why you'd want anything different... I certainly don't know!).
Conclusion
So to conclude this loooong batch of notes on the quiz module, the encouraged way to customize the quiz module is through the use of plug-ins. This will help keep things neat, tidy and reliable, as well as allowing you to share your inventions easily, and hopefully survive version updates with a little less stress!