From: Sam H. <sh...@ma...> - 2005-09-08 15:03:02
|
On Sep 8, 2005, at 9:15, Michael Gage wrote: > There is one source of recovery that we haven't explored yet. The > transaction logs in each course have the student responses to > problems. The answer_log also has similar data. > > In some cases if we can recover the exact structure of > the problem sets we might be able determine if the student > answered the quesition correctly. > > Sam, could you think about ways of automating the recovery of this > data? Mike, We can parse the transaction log pretty easily, although we have to watch out for multiline base64-encoded answers. ;) It looks like the transaction log actually contains most of the data we would need to reconstruct sets and problems: We should look at the most recent line in the log for each <user_id, set_id, problem_id> tuple. We can use user_id, set_id, problem_id, source_file, value, max_attempts, and problem_seed to recreate the "skeletons" of problems. However, for source_file, value, and max_attempts, we won't know if a user has an overridden value for their UserProblem, although we can do some analysis to determine the most popular values, and assume that these are the global ones. We can create skeletal User, Set, and UserSet objects from the user_ids and set_ids mentioned. We can't get any details about the user (name, email, password, permission level, etc.) out of this, nor any about the set (header files, dates, published). We can set the status, attempted, last_answer, num_correct, and num_incorrect fields in the UserProblem as well. We know nothing about problems that no one has attempted, or users who have attempted no problems. This definitely seems worth looking into though. I can take a look at it today if there's nothing else that's more urgent. -sam |