Calculation
Description
Calculation questions allow for a) the generation of randomised variables, b) numerical answers by students, and c) the use of a formula to calculate the correct answer. The generation of randomised variable is used primarily to create more realistic scenarios where in real life the same figures are not always presented. For example, in Medicine different patients have varying weights and heights.
Fit Criterion
Presentation
- Textbox allows student to enter a number
- Units:
- Option to allow student to type units
- Option to display on screen fixed units (e.g. 'ml')
- Option to allow student to choose which units to use (e.g. 'miles', 'km')
- Should display textbox in pink if returning to a previously unanswered calculation question
- Linking variables or answers between calculation questions can only be done when the 'source' question is on a previous screen. Linking is not possible on the current screen.
- User interface warnings should be displayed where appropriately for linked questions. For example, if a user answer is linked but the student has not answered the source question there should be appropriate warnings.
Marking
Formative Quiz/Progress Test
Marking is carried out after a user clicks on 'Finish'.
Summative Exam
Marking is carries out after a member of staff (inc SysAdmin) clicks on 'Finish'. Students, however, are not automatically marked. This is a speed thing as there could be large number of students all requiring marking simultaneously. Instead, the first time the Class Totals report is called post-exam the system will go into marking mode.
Feedback
Feedback includes:
- Tick/Cross show what the student has got right/wrong
- Bold options show the correct answers
- Textual feedback is available
- Student mark out of possible number.
- If standard setting has been used this should be displayed
- List of learning objectives that the question is linked to
Limited Save
After a question has locked it should only be possible to change the following aspects:
- General feedback
- Formula
- Tolerance for full marks
- Tolerance for partial marks
- Precision settings
- Marks (correct, partial and incorrect)
- Status - only 'Normal' or 'Retired' (not 'Incomplete', 'Experimental' or 'Beta')
- Bloom's Taxonomy
- Keywords
- Teams
Standard Setting
- There is only one rating per question.
Setup
There is currently support for two different ways of marking: 1) PHP eval() which is the default, and 2) R serve. The main disadvantage of PHP eval is that certain operations, such as division by zero, are fatal and therefore stop the current script running. This, obviously, could be catastrophic in the middle of a summative assessment. A solution is to use R serve but this has to be setup and configured separately (further details).
Data Format
Correct Answer
Calculation questions randomise their variables within certain ranges so unlike other question types there is no absolute correct answer. Instead a formula is used to describe how to calculate the correct answer from a given set of variables. The ranges of each variable, together with units, the formula and other information is stored as a JSON encoded string within the 'settings' field in the questions table.
Student Answer
Rogo uses $_SESSION to store the generated variables. The reason for using sessions is to prevent students from reading these values as they might if they were in hidden fields within the HTML. When a screen is saved the system will take the user answer from the textbox on-screen and add all the session variables. This is saved in the log table as a JSON encoded string:
{"vars":{"$A":"800.86","$B":"954.27"},"uans":"42","uansunit":""}
Mark is set to NULL so that the system knows that the question is unmarked. This also allows for a score of zero which is marked but the student has got it wrong.
Marked Data Format
After marking the original JSON encoded string is extended and marks set.
{"vars":{"$A":"800.86","$B":"954.27"},"uans":"42","uansunit":"","uansnumb":"42","ans":{"guessedunits":"","formula_used":"$A\/$B","units_used":"","tolerance_full":"0","tolerance_fullans":"0.8","tolerance_fullansneg":"0.8","tolerance_partial":"0","tolerance_partialans":"0.8","tolerance_partialansneg":"0.8"},"status":{"units":true,"exact":false,"tolerance_full":false,"tolerance_partial":false,"strictdp":true,"overall":0},"cans":"0.8","cans_dist":"5150"}