Re: topic groups:
The topic groups are defined as a problem set, and then are inserted
into other problem sets by using a "group:" prefix in the source file
entry for the set. Then when the set is assigned to a student, the code
that does the assignment is modified to pick out a problem from the
group and insert that into the set_user table entry.
In slightly greater detail: in the set that is assigned to a user, we
indicate that a problem comes from a topic group by using the notation
group:groupname
instead of the usual
path/to/problem.pg
for the problem_source entry in the set definition. The topic group is
then defined as a stand-alone set that is never assigned to a user.
This set contains all of the problems in the group.
To get the problem from the topic group, we modify the set assignment
routine to check for the "group:" prefix and appropriately deal with
that when it's found. I'm only doing this with versioned problems,
which requires more hacks to the WeBWorK system (but should show up in
the main release somewhere along the line), so I put this check in my
"assignSetVersionToUser" and "assignProblemToUserSetVersion" routines,
rather than in the default "assignSetToUser" and
"assignProblemToUserSet" routines. All of these are in Instructor.pm.
Does that answer your question?
Gavin
<| Post or View Comments |> |