Attempts at individual questions

Attempts at individual questions

by Gustav W Delius -
Number of replies: 9

Here in York we are allowing students to submit their attempts at
individual questions so that they can get feedback on that
question before moving on to the next one. They are also allowed
to reattempt individual questions if they get them wrong, however
there is a penalty subtracted from the marks for that question for
each wrong attempt.

We would like to implement this scheme in the Moodle quiz module.
We will keep the current possibility of reattempting the whole
quiz. Attempts at individual questions will be based on the
student's previous attempt at that question in the sense that the
answer field will be pre-filled with the previous answer and in
the case of a random question it will not be re-randomized.
Attempts at the whole quiz on the other hand will always give a
new version of the quiz.

As part of this we will also implement the
single-question-per-page feature, see
http://moodle.org/mod/forum/discuss.php?d=14646.

Clearly implementing this will require a change to the Moodle quiz
database. Julian Sedding, who is working full time on this, will
post the proposal for the database changes here.

Average of ratings: -
In reply to Gustav W Delius

Re: Attempts at individual questions

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Sorry but the feature to show X amount of questions per page is currently already being written by Herik Kaipe, for inclusion in 1.5 (paid by moodle.com).

However, isn't what you're talking about essentially what the Lesson module does?
In reply to Martin Dougiamas

Re: Attempts at individual questions

by Gustav W Delius -

Hi Martin,

thanks for your response and the information about what Hendrik is working on. When will his feature be ready? I was a bit puzzled by your "Sorry" at the beginning of that sentence. Surely that is nothing to be sorry about? It is great if new features are being developed through moodle.com.

You are right that the lesson module and the quiz module have a lot of overlap because both deliver and mark questions. In this overlap area the lesson has many good features that the quiz module is still lacking and vice versa. The current development model appears to be that the two modules should be developed independently. Or are you forseeing merging them at some point? A complete merger would seem difficult because they have different emphasis and philosophy. The quiz module is aimed at delivering assessments whereas the lesson module is aimed at delivering content. However it would be good if the internal structure of the two modules could become more similar and if there could be some harmonization of the user interfaces and a sharing of the question banks. Are there any plans in this direction?

In reply to Gustav W Delius

Re: Attempts at individual questions

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
It would be nice for them to be sharing questions, but probably Ray (who started the now-very-popular Lesson) is the one to speak with about that. smile Merging these two modules is a bit beyond me personally at this point.   mixed

Henrik's work is planned to be in HEAD by the end of the year (and thus 1.5).
In reply to Gustav W Delius

Re: Attempts at individual questions

by Henrik Kaipe -
"Clearly implementing this will require a change to the Moodle quiz
database."

I don't think any database change is required at all. This could be implemented as something that would look like a separate question type that, just like question type RANDOM, simply wraps an already existing question and that way provide the question with these extra features.
In version 1.5 the answer field in quiz_response has been extended to a text field (previously it was varchar(255)) so there is plenty of space for creativity.

Just my thought thou - I'd be happy to see what kind of solution you will come up with smile
In reply to Henrik Kaipe

Re: Attempts at individual questions

by Julian Sedding -
I established the following requirements together with Gustav:
1. A quiz can be attempted multiple times, where each instance of a quiz may be differently randomized.
2. While attempting a quiz, individual questions may be attempted multiple times. In this case the same instance of a question should be used always.

Implicit requirements from the current quiz module are:
3. The number of attempts per quiz may be restricted.
4. The number of attempts per question (in a particular quiz) may be restricted.

Further possible requirements:
5. It may be sensible to allow students to review or continue working on a quiz at a later stage.

To get a better understanding I drew a diagram of the current DB structure (omitting tables that I do not consider relavant here). Please correct me if I'm wrong here!

old_quiz_model.gif

I agree with Henrik that no changes to the database are required to achieve this, however, it seems sensible to clean up the model somewhat,
a) to make it easier to understand,
b) to make it more efficient and
c) to make it (more) compliant with relational database theory.

Therefore I would suggest to eliminate the direct connection between 'quiz' and 'quiz_questions', which is currently implemented as a comma-separated list in the 'quiz' table. This violates the 1st normal form of relational database theory. Since the 'quiz_question_grades' table already exists, which essentially provides the same information, I suggest to eliminate the 'questions' field in the 'quiz' table and to store any information, that is specific to a question in a particular quiz (i.e. the grade) in the 'quiz_question_grades' table (and maybe rename it to 'quiz_question_information').

The 'quiz_responses' (each attempt on a question, a better name may be 'quiz_question_attempt') should then be linked ith the 'quiz_question_information table, because the response is given to a particular question in a particular quiz. There does not seem to be any immediate benefit to this, however it seems more consistent to me.

Given randomised questions (this is of particular interest to us) in a 'quiz_attempt' it becomes necessary to provide a means to reconstruct the exact version of a question a student has worked on (e.g. a random-seed). If a random-seed were stored in the 'quiz_attempts' table, a question-instance could be reconstructed for each 'quiz_response'. (The default questiontype would probably need to be extended to support randomisation given a random seed).

Finally, the 'quiz_grades' table seems to duplicate the 'quiz_attempts' table to some extent. I assume that it stores the grade that is currently assigned to a student (probably the grade that was displayed to the student). I am not entirely sure if it is necessary to store this information, since it can be quite easily derived by looking at all 'quiz_attempts' of a user on a particular 'quiz' and applying the chosen grading algorithm.

The proposed changes would result in a new DB structure as shown in the diagram below.

new_quiz_model.gif

Please comment on this!

Julian

In reply to Julian Sedding

Re: Attempts at individual questions

by Gustav W Delius -

I am happy to hear that Henrik and Julian feel that allowing multiple attempts at individual questions does not require any changes to the database structure. I had not realized that one can simply have a separate entry in the 'quiz_response' table for each attempt. However I think we need a 'timesubmitted' field in the 'quiz_response' table.

Julian is suggesting two cosmetic changes. The first is to drop the 'questions' field in the 'quiz' table. The second is to drop the quiz_grades table. I think the first of these could be done as part of the next major rewrite of the quiz module (and I know that Julian has grand plans in this direction). The second one should probably be done when Moodle finally gets a central grades table. But until then any bit of efficiency gain in calculating quiz grades is needed and I assume that this table provides this. So I would not make either of these changes at this point.

Julian is also suggesting to store a randomization seed in the 'quiz_attempt' table in order to cater for randomized questions. The purpose of this will not be clear to most Moodlers, given that everything appears to work fine at the moment without such a randomization seed. However I think it is a good idea, it simply needs more explanation.

In reply to Gustav W Delius

Re: Attempts at individual questions

by Dawn Wright -
I noticed in someone's response related to this quiz topic that intermediate quiz results can be saved and later overwritten when the quiz is finally submitted. Will 1.5 have something like a "Save" button so students can periodically save their intermediate quiz results and continue with the exam from that point later?  This is needed to minimize problems due to power outages, etc. that might occur while a student is taking a high stakes exam.
In reply to Dawn Wright

Re: Attempts at individual questions

by Gustav W Delius -

Yes, this is indeed part of our scheme. Every question will have a "Save" and possibly a "Submit" button.

The "Save" button will actually internally do the same processing as the "Submit" button and will lead to a saved response, but the score will not be recorded or shown. In fact the quiz page will not change appearance at all. However if the student leaves the quiz page and goes back to the quiz at a later stage the saved attempt will be recalled.

The "Submit" button will not only record the response for that question but also change the quiz page so that it displays the score (and possibly the feedback and correct answer if the teacher has chosen those options) for that question. This button only appears if the teacher has chosen to allow multiple attempts at a question.

In our "Serving Mathematics" project which provides questions allowing mathematial expressions as answers we will actually rename the "Save" button to "Validate" button because it does not only save the answer but also povides help if the answer has an incorrect syntax.