Getting Started

WeBWork is an online testing platform developed by the Mathematical Association of America. It provides excellent tools to developed complex, equation-based online questions and deploys them within the Canvas system. There are online libraries of free WebWork problems (Math and Engineering).

WeBWorK is an online platform for delivering individualized homework problems. By giving students instant feedback, WeBWorK encourages students to make multiple attempts until they succeed. Cheating is discouraged as the problems are individualized. Instructors receive real-time statistics which helps customize lesson plans to better serve students.

Uses and Benefits

Immediate Feedback

Research has shown that good teaching practice gives prompt feedback to students [1] and goal-directed practice with targeted feedback can enhance student learning [2].

Each question in a WeBWork practice test, assignment or exam will provide immediate feedback to students if their responses are correct. It can help students asses their own knowledge on a specific topic.

Allowing multiple attempts provides students a chance to reflect on what they know and what they need to know.

Although not currently enabled at UBC, WeBWork also allows for customized hints when a student answers a question incorrectly.

When students answer a question incorrectly, they will be given immediate feedback. (Click to enlarge)

Individualized Problems

Questions in a WeBWork problem set or assignment is randomized. Each student will be given a unique assessment experience that discourages cheating.

Above are examples of the same problem set but with different first questions for 2 different students. (Click to enlarge)

Real-time Statistics

Effective teaching requires instructors to continually reflect on our past teaching experiences and adapt our courses based on feedback or evaluations [3].

WeBWork collects statistical data for each problem set that help you customize your course or lesson plans. You can see data on areas such as the average number of attempts on a question and percentage of students who got a question correct.

Students can also see their own progress in the course with data from their responses to assignments and tests.

Above is an example of the statistics for an assignment. (Click to enlarge)


  1. Chickering, A. W., & Ehrmann, S. C. (1996). Implementing the seven principles. AAHE Bulletin, 49(2), 2-4. [1]
  2. Theory and Research-based Principles of Learning, Eberly Center for Teaching Excellence, Carnegie Mellon University,
  3. Teaching Principles, Eberly Center for Teaching Excellence, Carnegie Mellon University,

WeBWorK is a UBC supported web-based homework system which was developed at the University of Rochester in 1995. UBC's Math department first piloted WeBWorK in 2009, and has since been adopted by many more departments. The current instance is deployed in a high availability environment using UBC IT infrastructure, providing a reliable service to all faculties across UBC.

WeBWorK is primarily used in Math and Engineering at UBC. At UBC Engineering, a number of Electrical, Mechanical, and Chemical Engineering professors take advantage of the WeBWorK system. UBC Engineering has undertaken a multi-year project to build libraries of WeBWorK problems.

Contact if you want to learn more from the current faculty users of the WeBWorK system.

Students can access WeBWorK through Canvas, which is required for the course roster and grades to sync.

You will want students to access WeBWorK through Canvas, at least for the first time they login to WeBWorK. Accessing the course this way automatically adds the student to your WeBWorK course and pushes the grades back to the Canvas gradebook. On subsequent visits, students can go directly to WeBWorK if they desire.

To create a link to WeBWorK through Canvas, go to "Assignments" and click on "External URL" in the drop-down menu for Submission Type. Click "Find" and then press the blue "Submit" button after you have selected "WeBWorK."

One of the easiest ways to navigate WeBWorK is to take advantage of a large bank of previous problems that are publicly available on GitHub or accessible through WeBWorK's Library Browser tool. 

Once you have logged into WeBWorK, click on "Library Browser" in the left hand side column.

From there, problems can be added to a preexisting problem set, or to a newly created one. Select "Open Problem Library" and then make sure to select "UBC" in the subsequent row. More specific problems can be found by adding the subjectchapter, and section of problems you are looking for. Click on "View Problems" when you're ready.

Once the problems appear below the "View Problems" button, you can choose to add problems individually, or add all the problems listed by clicking "Add All."

Check your Assignment in the "Hmwk Sets Editor" on the left hand column to see if the import was successful.

The process to copy files from the website is as follows.

  1. Go to the GitHub UBC folder.
  2. Open the PG file (which houses the text of the problem) of your choice.
  3. Check to see what image files are necessary for the problem. They will be denoted with an "@" in the line of code. If there are no image files present in the code (i.e. PNG, JPG, etc.), then skip to step 11.
  4. Go back to the outer folder, find the necessary image files, and click "Download."
  5. Go to WeBWork. Click on the "File Manager" icon in the left hand column.
  6. Ensure you are importing to the correct course in the top drop-down menu.
  7. Click "Choose File" at the bottom of the page.
  8. Select an image file you downloaded from GitHub.
  9. Click "Upload."
  10. Repeat for all image files you downloaded.
  11. Go back to GitHub. Find the PG file you are interested in, and select & copy the entire contents.
  12. Go back to WeBWork. Click on "Hmwk Sets Editor" in the left hand sidebar.
  13. Under the "Edit Problems" column, click on the row in which you would like to add your newly copied GitHub text.
  14. At the bottom of the page, click on the check box that says "Add __ blank problem template(s) to the end of the homework set" and put the number "1" in the blank box.
  15. Click "Save Changes."
  16. In the new problem you just created, click on the "Edit" icon.
  17. Select all of the text and delete. Paste the new text that you copied earlier from GitHub's PG file.
  18. At the bottom of the page, click "NewVersion" and give your file a new name. Check to make sure it will be categorized in the corresponding correct folder, then click the blue "Take Action!" button to save your work. You're all done! Repeat the process for all problems you would like to duplicate from GitHub.

Common Tasks

Sometimes, it's necessary to copy a Homework Set from one WeBWorK course to another (for example, re-using a collection of useful problems without needing to search for each problem again in the Open Problem Library).

To copy a Homework Set from one WeBWorK course to another, we must export set(s) from one course, and import them into another course.

Here are the steps to follow:

First, you will archive and download the Homework Set(s) from the first course:

  • Go to the WeBWorK course with the content you want to copy from, and click on "Homework Sets Editor"
  • Select "Export" and pick the sets you want to export (or select all) and click "Take Action!".
    (The export function creates a "set definition file" (.def) for each selected Homework Set.  Each .def file has a filename matching the name of the homework set, and contains the assignment name, dates, and references to the problems being used in the set. The .def files are saved in the templates directory of the course.)
  • Go to the File Manager
  • Make sure the "templates" folder is listed, and select all .def file(s) you want to export. 
  • Click the "Make Archive" button on the right. A  .tgz archive file will be created.  You should see the new ".tgz" file listed below your .def file, using a similar file name. (A .tgz file is an archive, similar to a zip archive, that contains all the Homework Set definition files.)
  • Download the .tgz file to your computer by selecting the .tgz file and clicking the "Download" button.

Next, you will upload the archive file into the second course, and unpack ("import") it into place:

  • Go to your second WeBWorK course, and go to "File Manager".
  • Click "Choose file", select the .tgz file from your computer, and click the "Upload" button. Now your archive is physically uploaded, but still needs to be unpacked and imported into the second course.
  • To import your newly-uploaded .def file(s), go to "Homework Sets Editor", select the "Import" tab, select "Multiple Sets", and select the .def file(s) from the list, and click "Take Action".
  • Edit the assignment due dates and homework sets as needed.

What level learner is this workshop for?

Complete beginners with little to no previous Webwork experience.

What topics will the workshop cover?

  • What WeBWorK is and why it is useful.
  • How to create your own WeBWorK course and attach it to Canvas.
  • The kinds of assessments offered by WeBWorK and how to create them.
  • Problem creation outside of WeBWorK.
  • Creating and editing a blank problem in your assessment.
  • The basic syntax of PG language and the general template for all problems.
  • Randomizing questions, variables, arrays, for and if statements, creating functions.
  • Solutions, hints, tolerances.
  • Uploading and displaying images in WeBWorK.
  • Live demo showing coding of a simple example problem.
  • How to connect WeBWorK to gradebook in Canvas.

 Request for a Workshop.

Request a Workshop

Please fill out the form below to request a workshop.

  • Only UBC email is acceptable. ................................................................. This is the email we'll use to contact you and send the confirmation and updates for the workshop.
  • eg. APSC 100
  • MM slash DD slash YYYY
    Pick a day when you will be available for the remote session or leave it blank if you're flexible
  • :
    Please note, we're generally only available between 9:00 AM and 4:30 PM to start a remote support session. If you're available for a range of time, enter the start of the range here.
  • :
    If you're only available between a range of time, enter the end-time of that range here.
  • Please let us know what kind of support you are looking for.
  • This field is for validation purposes and should be left unchanged.