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"}