WeBWorK Problems

A "solutions manual"

A "solutions manual"

by Alex Jordan -
Number of replies: 3
Some faculty at my institution are fans of MyMathLab; in particular they point to a feature whereby a student can click a button that reveals a walk-through solution to their problem and then reseeds the problem that they have for credit. Regardless of any pedagogical concerns of a tool like this, I want to provide my colleagues with it so they are more comfortable migrating to WeBWorK.

We thought about it at the Vancouver code camp and Arnie Pizer helped us outline how it could be implemented. He suggested we post here to see what the community thinks, and especially to see if anyone brings any further considerations. We also emailed Peter Staab about this, and his expertise may make it happen long before we (being pretty new to all this) can make it happen.

  1. In the Hmwk Manager/Editor editor there would be a third data field for each problem after Weight and Max Attempts. For now, call it 'Show How' although we may need a better name.
  2. 'Show How' would be -1 by default to not use the feature.
  3. If Show Another were n >= 0, then once a student had used n attempts on that problem, their problem screen would get a new button (perhaps next to Email Instructor). For now, call this button 'Show How'. Also, may the button becomes enabled once they have a correct answer regardless of attempts.
  4. Pushing this button, one of two things happens depending on a setting in the Course Configuration.
    1. In a new tab, a re-seeded version of the problem appears. Regardless of due date, for this version, the student can see everything, including the walk-through solution if it exists.
    2. In a new tab, the original version of the problem appears. Regardless of due date, for this version, the student can see everything, including the walk-through solution. In this case the student gets a new seed for the problem that counts for credit.
A lot of the code for this may already exist:
  1. From the problem editor, we can already cause a newly seeded version of a problem to appear in a new tab, complete with a record of its seed for answer checking.
  2. The parameters that let professors see previews of solutions before due dates could be used too.
Some considerations:
  1. This has to be something enabled problem by problem. While a global setting could be there too, there are too many problems for which this would be entirely inappropriate.
  2. We might want a course configuration parameter that prevents students from using this button too many times. If they push it too many times and randomization is weak, they'll get enough of a record to have been given the solution of whatever counts for credit at the moment.
  3. Under the setting that students keep the originally assigned problem, the new problem they get to see could be forced to use a fixed seed, say 1234.
  4. It should be crystal clear to the student that the new version does not count for credit, even though it would still have answer checking.
  5. The button should not appear until the Show-Another-number-of-attempts has been used (or possibly once the student has 100% credit).
  6. The data field in the Homework Editor seems to allow space for this without cluttering it up.
  7. The setting of which type of Show me Another is employed really should be in the course configuration (not problem by problem or set by set), since employing both for different problems or different sets could confuse students.
  8. While we'd eventually like the Show Another parameter to be saved in set definition files, that might be something to hold off on at first until the proof of concept is up.
If anything occurs to you to append to these considerations, please reply. If you have the expertise and desire to make this exist soon for 2.8 (David Gage, Danny Glin?) then post about that too.
In reply to Alex Jordan

Re: A "solutions manual"

by Arnold Pizer -
Hi Alex,

Thanks for starting this discussion. I have a few comments and questions on how this should work. Hopefully people who have used or may want to use such things will contribute comments. 

First of all I don't think we have to worry too much about what to call this as I think instructors should be able to call it what they want depending on how their setup works.  I definitely agree with you that most of the configuration should be in the configuration files so they apply on a course by course basis otherwise things will be too confusing for students and too complicated for instructors.  What I have in mind is that when appropriate (see below) the student would see a line consisting of an initial phrase(i), a button name(b) and a final phrase(f) some of which might be empty.  These would be set in config files and a number of examples (commented out) would be given. E.g. for your first option above (4.1) you might use
(i) Show me (b)how (f)to do a similar problem
and for your second option (4.2)
(i) Show me (b)how (f)to do this problem
I can think of three additional options people may want
(i) Show me (b)another version (f)of this problem
     This would simply reseed the problem and do nothing else
(i) Let me (b)play (f)with a similar problem
      Identical to the first option but solutions are not shown.
(i) Let me (b)play (f)with this problem
      Identical to the second option but solutions are not shown.
Are there any other variations on this theme that instructors may want?

My next comment/question gets a bit more complicated.  Suppose the show_how parameter is 4. Then after 4 attempts (or 4 incorrect attempts ---  I definitely think we should use whatever the Hint mechanism uses and I don't remember which), the student sees the show_how_button.  If the student ignores the button and just continues to submit answers, the show_how_button should be displayed and it will be since the number of attempts is over 4.  But what happens if the student clicks the button? Should the phrase be displayed immediately (the number of attempts is over 4) or should the student have to make 4 new attempts on the problem before the phrase is displayed again? I  think the phrase should be displayed only in the main window (where students submit answers not in the auxiliary window where answered are only checked just like is done after the answer_date). My feeling is that most instructors will want students to submit 4 new answers in the main window before the phrase is displayed again.  It would be best to find one or two options that would satisfy most everyone (e.g. display after 4 new attempts and ignore everything going on in the auxiliary window or ?).

Putting a limit on how many times a student can click the show_how button should be pretty easy.  But you should tell the student what the limit is and how many times they have left and maybe if they have used up all their tries and you should do this in a way that doesn't take up much real estate and doesn't overload the student with info so that they ignore everything one is telling them (e.g. how many attempts on the problem may remain).

Here's my last comment/question.  If the instructor allows unlimited attempts on a problem, everything is fine but how should things be handled if the number of allowed attempts is say 10.  I always allow unlimited attempts so I don't have a good feel for this.  But if an instructor allows only 10 attempts, would they be happy allowing an unlimited number of tries in the auxiliary window? I assume that even though a student may get a new version of a problem, they should not get any extra attempts. Again it would be best to find one or two options that would satisfy most everyone.

Alex, I have some specific comments (beyond what we talked about in Vancouver) and how this might be implemented, but I'll write and up and send them to you and Chris in a private email.

Arnie
In reply to Arnold Pizer

Re: A "solutions manual"

by Chris Hughes -
Hi Arnie and everyone,
I have been diving into the code, and believe that I know where I might start- I'd like to confirm that I'm digging in the correct place, and also ask a few early questions, if I may.

It looks like the button itself will be created in

webwork2/lib/WeBWorK/ContentGenerator/Problem.pm

As well as creating the button, we would need to grab the current problem seed, and possibly modify it depending on the configuration for that problem.

The options for the button (such as if it is even present) seem like they would be specified in

webwork2/lib/WeBWorK/ContentGenerator/Instructor/ProblemSetDetail.pm

I've studied the code, but have so far been unable to work out which parts read and write to the database- does anyone have any hints on this? Additionally, am I looking at the appropriate files?

Thanks for your time.
Chris