This is how the WeBWorK questionnaires are handled
(setSampleQuestionnaires). Look at them to see what we do and the
scripts we use to compile the answers. In our case the questionnaire is
not totally anonymous for reasons I'll explain below but we tell
students that almost nothing they do on the web is totally anonymous
and that we will not attempt to identify responses with individuals.
Our questionnaire has both numeric and essay data. If a student submits
the questionnaire multiple times, we only want to keep numeric data
from the first submittal but we want to append essay data from
subsequent submittals to the essay data from the first submittal.
Obviously if you only want to allow a student to submit the
questionnaire one time, things are much easier and there would be no
reason to "identify submittals anonymously".
To "identify submittals anonymously" for the above reason, we tag each
submittal with it's PSVN number (the Problem Set Version Number). Since
these numbers are unique within a course but not unique within the
WeBWorK system and since the questionnaires are given out in 10 or so
courses, we set $psvn_digits in Global.pm to a large value (maybe 10. I
forget what we used --- this is the birthday "paradox" problem --- look
at that and choose a value so that there is an extremely low
probability that two students in different courses will have the same
So in practice without too much trouble, we could identify students
with submitals but we don't as promised. If you only want to give
students one attempt or if you are not worried about a single student
corrupting the data with multiple submittals, there is no need to
"identify submittals anonymously".
You will see in the .pg code the line
$recordSubmittedAnswers =0; ## do not record answers -this is an anonymous survey
so that if you have that and also have
$logAccessData = 0;
then at least as far as WeBWorK is concerned things are anonymous.
Hope this helps a little.
<| Post or View Comments |>