Forum archive 2000-2006

Amanda Danforth - A Day in the Life of a WeBWorK Professor

Amanda Danforth - A Day in the Life of a WeBWorK Professor

by Arnold Pizer -
Number of replies: 0
inactiveTopicA Day in the Life of a WeBWorK Professor topic started 7/25/2002; 5:36:00 AM
last post 7/25/2002; 5:36:00 AM
userAmanda Danforth - A Day in the Life of a WeBWorK Professor  blueArrow
7/25/2002; 5:36:00 AM (reads: 3880, responses: 0)



Informal instructions for using WeBWorK

(Instructions for WeBWorK 1.9). See WeBWorK2 tutorial for newer version.



This document gives details on how one professor actually uses WeBWorK. Most of what is discussed here can be done on the professor page after you login into your course. See the WeBWork on line documentation for more information on almost everything. Also the online discussion group is a good place to go for help.




The professor page is an amazing sourse of information, and has the ability to help a professor do nearly everything for managing a course. One must note, that the professor page is only accessable to those how have professor privaleges. This is done by running the Perl script mth141 apizer


See Classlist Information for more help on this.


The first thing that needs to be done after this is to make sure and "build" at least one problem set to access all the features of the professor page. Usually this is easily done by building set 0, which is a problem set designed to familiarize students with the system, and is generally not worth any points. So, if you do not have full access to all of the professor page, make sure you build set 0.




There are many ways for you to view how your students are doing. You have the option of viewing progress by section, by recitation, or by individual student. You will see what score the student has, how many attempts it took to get the right answer, the percent of class that has the correct answer, and many other things.


These features are a good tool to recognize students that may need additional tutoring, and to find the problem that most students are having trouble with. Options 1, 2, and 3 on the professor page help go through the class as a whole.


For the individual student, see option 9 ("Examine or modify data for an individual student"). From this page, you can give the student a different due date on a problem set, view the student's version of the problem, see what they entered as an attempt, download a paper copy of thier problem set, and other things.




In order to have a successful course, the trick is to create appropriate problem sets. You want the problems to correctly reflect the topics that are discussed in class, and to be the appropriate difficulty level. Thus, creating a problem set is one of the most important steps in a maintaining a successful WeBWorK course.



Picking out Problems


Most of the time it is easiest to just copy problems from the distributed problem library when creating a new problem set. (If you are writing new problems see below "writing new problems.") Since there are over 3000 problems that are distributed with WeBWorK, it is best if you take some time to go through the problem library to pick and choose which problems you want to use for your course.


The problem library is set up so that the problems are organized by topic. Problems in the same topic area are in the same directory, which is a subdirectory of the templates directory of the WeBWorK problem library.


For example, the subdirectory setDerivatives2Formulas contains 46 problems that are all derivatives involving formulas.


Thus, the first thing you need to do is copy the appropriate directories for your course (and all of their contents) from the problem library into the templates directory of your private course (mth141priv). You always want to work from your private course because you don't have any "practice" user's in mth141priv so that even if a student finds out that mth141priv exists, he or she will not be able to login to mth141priv.


Now that you have the problem library in the templates directory of your private course mth141priv, the best way to pick problems from the library is to build all of the appropriate sets from the "Build Problem Sets" page in the professor page.


For example, if you're interested in Derivatives, in the "Build Problem Sets" page, click on setDerivatives1.def, setDerivatives2Formulas.def, setDerivatives2_5Implicit.def... You can view (or even finish) the problems on the internet, or download paper copies of the problem sets to decide which ones you like best. From here, pick which individual problems you want to include in your homework sets.


Now it's time to put together your problem set in your private course. Let's assume you are putting together problems that are going to make up WeBWorK set 9.


One thing to remember is that you might want a few problems from one topic directory, and a few problems from another topic directory. For example, you might want problems, from topic directory setDerivatives2Formulas and the problems,, from topic directory setDerivatives5ChainRule, and others from other directories as well to all be in set 9.


It is important to understand that you do not have to put all 46 problems from directory setDerivatives2Formulas in your set 9. If you do this, your problem sets will be too large, and students will not have the full appreciation of what WeBWorK is all about.



Set Definition File


Now that you have your individual problems picked out, you have to create a set9.def set definition file that includes all of the problems that you want to include in set 9. The problems that are defined in set9.def are the problems that will make up the assignment.


The set definition file set9.def needs to be located in the templates directory. The best way to create a set definition file is to copy an already existing set definition file and edit it (don't forget to change the due date!!). Then, you can cut and paste to edit the set definition file to include the problems you want. See Set definition file format for information on the format for the set definition file.


Here is a sample file, set9.def, containing 11 problems, 2 from setDerivatives2Formulas, 3 from setDerivatives5ChainRule, 3 from setDerivatives6InverseTrig, and 3 from setDerivatives8RelatedRates:



setNumber=9 ## optional and ignored - the name of the set is
## derived from the name of the file set9.def.
## In this the name of the set is 9.
openDate = 09/05/02 at 11:00 AM
dueDate = 09/15/02 at 1:00 PM
answerDate = 09/26/02 at 11:00 PM
#paperHeaderFile = set9/
#screenHeaderFile = set9/
##You can create paper or screen headers for specific
##problem sets. If commented, default will be used

problemList =

setDerivatives2Formulas/, 1
setDerivatives2Formulas/, 1
setDerivatives5ChainRule/, 1
setDerivatives5ChainRule/, 1
setDerivatives5ChainRule/, 1

setDerivatives6InverseTrig/, 1
setDerivatives6InverseTrig/, 1
setDerivatives6InverseTrig/, 1
setDerivatives8RelatedRates/, 1
setDerivatives8RelatedRates/, 1

setDerivatives8RelatedRates/, 1



There is also a way that you can edit a set definition file over the internet through the professor page. This is a handy way of doing your editing if you have limited or no shell access. From the professor page, go to the "Build Problem Set" page. Option 2 on this site is "Simple editing of set definition files." Once again, if you were putting together WeBWorK set 9, you could edit setDerivatives2Formulas.def and cut and paste from setDerivatives5ChainRule.def, setDerivatives6InverseTrig.def, and setDerivatives8RelatedRates.def to create set9.def as above.



Final Steps


Next you build the WeBWorK set in your private course. Here you have a short classlist file containing a couple of users and one professor, called mth141priv.lst, which you used to initialize the mth141priv classlist database. Building a set in mth141priv will build it for these few users. From the web, go to the prof Page in mth141priv, enter the "Build Problem Set Page", select set9.def and then build the set.


Now you should have a fully working problem set which is due on 9/15/02. You should make sure to go through this problem set to make sure that you don't have any errors, and that everything is working correctly. Make sure that your answers are the same as WeBWorK's answers. Also try getting a hard copy to make sure that you don't have any LaTex errors. If everything is working smoothly, all that is left to do is to transfer everything over to your public course. From your templates directory of your private course, type


cp set9.def ../../mth141/templates


Also if you need to, copy all the necessary subdirectories and their files (using cp -r) to ../../mth141/templates/.


Then you can build the set for real by entering the prof Page in mth141, then the "Build Problem Set Page", selecting set9.def, and building the set.


Next you precreate the latex2html images. This is useful because all of your problems have latex images, and viewing them in "typeset" mode is the nicest for viewing. If the images are not precreated, the first time a problem is output in "typeset" mode, all the images are created on the fly and there is usually a few seconds delay. If many students are creating images simultaneously, this could take even longer, and you will run into the risk that the images will be created with errors. If there are errors, the students will not be able to view the problem in "typeset" mode. However, if you use the precreation script, once the images are precreated, the "typeset" mode is quite fast.


The precreating script is used by entering: mth141 set9.def


Note that this takes a long time as latex2html is a "slow" program (it might take as long as 4-6 seconds per problem per student on a relatively fast server). is best run "niced" and in the background. E.g.


nice /ww/webwork/system/scripts/ mth140a set9.def > set9.log &


which (under many shells) sends all messages to the set9.log file.




Writing new problems

You may want to select problems from the text book which you want to modify into WeBWorK problems. In order to create a problem template file (i.e. a .pg file), usually you start with a .pg file containing a problem similar to the one you want and modify it (see the list of approximately 3000 .pg files distributed with WeBWorK). Make sure to continue working in your private course.


After creating all the .pg files that are modified text book problems, move to the templates directory and create a set definition file, as shown above.


When writing your own problems, you will usually have a few errors here and there. To sort through them, here's a general guideline to help.


Connect to your mth141priv site with your web browser and look at the new set. First do a Get Hard Copy. Often, you have made a LaTeX error somewhere. Or perhaps the group ownership and/or permissions of the files was not set correctly. If there are errors, they will be listed along with a copy of the TeX source file which was produced.


If you can't see where an error occurs, select the problems one by one. After fixing any errors and obtaining a postscript or pdf version of the WeBWorK assignment, look at the assignment for any errors in presentation. Sometimes, the output is not what you expect.



Note that the .pg files must have permission 660 and group mth141group in order for the webserver to be able to read and write to them and subdirectories should have permission 770. You can check permissions by entering ls -l . Permission 660 is listed as -rw-rw---- and permission 770 as -rwxrwx---. You can change the permission of all .pg files in setDerivatives2Formulas to 660 by entering chmod 660 *.pg when in the setDerivatives2Formulas directory. If you are lazy, you can set all permissions in templates to 770.


See Constructing Problem Sets for more information.




Just go to the Add Student(s) Page and follow the instructions. If you want to build multiple sets for the new students with different due dates, run the routine multiple times. Adding a student who is already in the course will not change any information already in the classlist database.


Hint: If it is early in the course and you want to give new students the same due dates that current students have, add the new students from the Add Student(s) Page but do not build any sets for them there. Then go to the Build Problem Set page and (re)build the sets that were not built for the new students. (Re)building sets that have already been built will not alter any data for students already in the set.




From this page you can edit classlist database, give a student a new password, or edit the classlist database for an individual student. You can also import and export the database, depending on whether you need to update your database due to students adding or dropping.




Changing a password


If a student forgets his or her password, you can give them a new password, using option 3 from the Classlist Utilities page.



Changing a login name


To change a student's login name, you can give them a new login, using option 2 from the Classlist Utilities page.



Removing students or changing status


Removing students is easy. Just enter the word "DROP" or the letter "D" (without quotes) in the status box for the student classlist information (from the Classlist page). You may want to enter a comment giving the drop date. You can later resurrect the student by changing his or her status to C (for current). In that case, you may want to go to the Build Problem Set page (or Add Student page) and rebuild the sets that were not built for the dropped student. (Re)building sets that have already been built will not alter any data for students already in the set.



Importing and Exporting Classlists


Importing and exporting can be tricky procedures. Make sure to clearly read all of the instructions before attempting,and make sure to understand the differences between a classlist database and a classlist file. Exporting the classlist database (option 5) will export the current classlist database to the selected classlist file.

Importing the classlist database (option 6) will update the classlist database using the information from the selected classlist file. We used this option when we imported our classlist at the beginning of the semester. See "Classlist Information" for more details.

Exporting the classlist file (option 7) allows you to download the classlist file so that you can view or edit the classlist from your personal computer.

Importing the classlist file (option 9) allows to upload the classlist file from your personal computer. Usually you would do this after exporting the classlist database to a file, downloading and then editing the file in Excel or some other editor or spreadsheet program.

See the Classlist Utilities page from the professor page for more information and specific help on how to preform these tasks.




You can do scoring from the web. Go to the Professor's Page and then to the Scoring Page. The scoring procedure creates files (in .csv format) that include the status of the problems, the number of attempts, and also the final score of the problems. You can download these different files onto your personal computer, edit them if you need to, and/or sort the scoring files.


You should realize that scoring a problem set is like writing grades into your grading book, once the grades are entered they are fixed unless you change them. Whatever a student does after a set has been scored, does not effect the scoring files.


There is no standard procedure of when to do scoring. You may have a few options.


  • You can score each problem set right after the problem set is due. This way, you can email your students their homework grades throughout the semester. The trouble with this is that if you gave a student an extension but scored the set before the student completed the set, anything the student did after you scored the set would not be recorded. Once the student has completed the set, you would have to edit the scoring files accordingly by hand.

  • You can score all of the problem sets at the end of the semester. This way, there are no problems with extensions and no major editing needs to be done. The drawback is that you wouldn't be able to send emails to your students.

  • The final option is a combination of the other options above. You can score each problem set right after the problem set is due, email your students if you want, and then score once more at the end of the semester. Scoring a set just appends the scores to the totals file so if you score a set twice, it will appear twice in the totals file. Thus, if you do this, you would have to use the totals file accordingly.


It should be noted that the first time a mth141_totals.csv file is created, student names, sections, and recitations will be taken from the current classlist information. If you score a set after that, the new information is appended to the mth141_totals.csv file by matching student ID's. If you change a student's recitation (or name, etc) but keep their student ID, the new recitation will not be written in the mth141_totals.csv file. If students add or drop the course, this will be handled automatically.


All the scoring files are automatically put in the directory .../mth141/scoring.


Also, it's easy to use e.g. excel to add exam grades to the mth141__totals.csv file.

You can also do scoring from the command line (this is not recommended). To do so follow the directions below.

You should usually work from your templates directory (but this really doesn't matter). To score set 6 enter: mth141 6
This creates the files s6scr.csv, s6ful.csv, and s6bak1.csv in your scoring directory. You will be asked if you want to total the scores in the score file for this set, and append these totals to the cumulative totals file mth141_totals.csv. It is always a good idea to answer Y. The first time you do this you will get a lot of messages of the sort:
No record for PRACTICE4 , ID = 000-00-000d,
in the mth141_totals database. The record will be padded with blanks.


You can ignore all such messages. In general they have to do with automatically handling records for students who have been added to or dropped from the course.


See Grading problem sets for more information on scoring.



Sometimes, after you score problem sets, you may want to send your students an email discussing thier scores. Other times you may want to send an email to students with general announcements about your course. There is a useful tool on the "Professor page" that allows you to send email, which allows you to send personalized emails.


The personalized variables include: $FN - first name, $LN - last name, $SID - student id number, $SECTION - student's section, $RECITATION - student's recitation, $STATUS - C, drop, withdrawl, audit, etc, $EMAIL - student's email address, $LOGIN - student's login name, $COL[3] - third column in merge file, $COL[-1] - last column in merge file.

Here is a copy of the file email10-25-96.msg which is in the email subdirectory of the templates directory. :


Subject: mth141: WeBWorK grades and new HW set


Dear $FN,

This email message should go to everyone in mth141 for whom I have
an email address.


A new WeBWorK assignment (assignment 8) covering the material from
this week's lectures is up on the WeBWorK system. It must be completed
by 2:00am Tuesday, November 5. Remember, assignment 7 must be completed
by 2:00am Tuesday, October 29.


Your score on WeBWorK assignment 5 was $COL[-3] points out of a
possible 15 points. Your score on WeBWorK assignment 6 was $COL[-1]
points out of a possible 10 points. Your score on Exam 2 was $COL[-2]
points out of a possible 100 points.

These scores should include any adjustments I have made. If there are
any errors in these scores, please see me.

Have an enjoyable weekend.

Professor Pizer

Now you can send a "personalized" email to your students by merging the above with the mth141_totals.csv file.

Usually you want to be really careful, so first send the email to yourself by using a short testemail.lst which you create.


testemail.lst is a subset of the mth141.lst consisting of 6 or 7 students, but with all email addresses changed to your personal email address so that all test messages are sent to you.


After the test email comes to you, and you see that there are no errors, you can go ahead and send your class personalized emails!


See Sending e-mail for more information.



There are many times when you might want to view or modify data for the individual student. You would want to do this for a number of reasons. Perhaps a student is having trouble with an single problem, you can view this student's version of the problem to help them, or you need to give a student an extension on a problem set, or see the status of this student's progress. All of this can be done through the professor page.


There are two different ways you can use these utilities. If you know a student's PSVN number, you can go to option 10 in the professor page. If you don't know this, you can use option 9 in the professor page instead, using the student's name and problem set name/number.


From here, you can make changes for an individual student. For example, you can extend the due date for an individual student or change the status (correct, incorrect) or number of allowed attempts on a problem. You will also be able to download a postscript file of this version of the problem set.


See the professor page for more information on how to use these utilities.



From this page, you can give a new due date on a problem set for the entire class, or change the status of a problem for the entire class. You can also change header files, or even change the max attempt value. While it is easier to do these changes before a problem set is built, this gives you the option to change things after building problem sets.




Sometimes (especially for exams), you might want to create paper copies of an assignment. To do this go to the Download paper copies page.




From the "Housekeeping Utilities" page, you can do some housekeeping tasks such as recovering disk space by removing old tmp files, show users currently logged in, or edit the course homepage. See option 14 for more information.




Here is an idea about how to create and administer a WeBWorK exam. The idea is that every student takes the same identical in-class exam. You can create a standard WeBWorK problem set using the exam questions so that on this set, each student has an individualized version of the exam questions.


You can give students some 30 hours after the in class exam ends to do the WeBWorK version of the exam. If they get a problem (or a part of a problem) wrong on the in class exam and the whole problem correct on their WeBWorK version, they receive 25% of the original value of the part(s) they missed on the in class exam.


This seems to work quite well and is easy to administer. Mechanically, it works as follows.

First you can create a set of problems for the exam and check that they are OK. For example, use exam2.def as the set definition file and in that file have setNumber = Exam2 as the first line. Don't put any spaces in the "setNumber", i.e. write Exam2 not Exam 2.


I do this in my own mth141priv area. I have a testexam.lst consisting of SS#'s 000-00-000n and login names apizern where n varies from 1 to 9. I also have a special file in the exam2 subdirectory which identifies the exam, leaves spaces for the student's name and SS#, etc. In exam2.def, I have the line

setHeaderFile = exam2/
so that the special header file will be used.


Then I build a problem set using this list. On the web, I look at the nine possible versions of the exam and pick one to use for the in class version and download two copies of that one. If for some reason I don't like the samples, I can go to the prof page and change the seeds of problems or I can adjust the pg files and/or delete and rebuild the set.


This is usually not necessary. This is done in my private mth141priv area that the students know nothing about and could not (not knowing my WeBWorK password) access even if they did. On one copy of the in class version, I write in by hand the correct answers (and as a double check enter these answers into WeBWorK to make sure they are correct). Next I xerox sufficient copies of the exam (both with and without answers) for the entire class. I transfer the exam questions to the public version of my WeBWorK course and then build the set again using the standard and mth141.lst files.


I am very careful to make sure that the open date in exam2.def is correct (I open it three quarters of the way through the in class exam). Then I run off paper copies (see down loading paper copies for an entire class) of the individual versions of the exam. The paper copies are printed in order, first by section name, then by student name.


At the exam, after a student hands in his or her completed exam, I give the student a copy of the exam with answers and a copy of their individual version of the exam. Thus the student can immediately begin to work on problems which they got wrong on the exam. Giving students these two things is just a convenience for the students, but one which seems to be appreciated.

If I just wanted to allow students to check whether or not their answers were correct without telling them the correct answers, I would use the prof page to copy the seeds from the in class exam version to say practice1 in mth140a. That way, Exam2 for practice1 in mth140a would be identical to the inclass exam.


<| Post or View Comments |>