Mastery Module Assignments using Lon Capa

Joseph MacMillan


LON-CAPA – the Learning Online Network with Computer-Assisted Personalized Approach – is an online Learning Management System (LMS) with sophisticated assessment ability. Within LON-CAPA, it is possible to create complex homework and exam questions and deliver them to a large number of students at once.  Features include algorithmic, randomized questions personalized for each student, the ability to add hints and feedback specific to the question, and flexibility for creating different types of questions – questions involving algebraic expressions, plotting, images, sorting, and chemical formulae are all built-in to LON-CAPA.  It is currently used by over 100 institutions worldwide, including a number of universities in Canada.

Online homework delivery, at least in the sciences, has now largely replaced traditional hand-written and hand-graded homework sets, with little effect on student performance (Bonham et al., 2003).  There can be, however, a direct cost to the student; most of the popular online systems for homework delivery are developed and run by the large educational publishing companies, which offload the cost of the system directly to the students, often charging upwards of $100 per student for access.  In addition to the cost, these systems are also inflexible in how homework is delivered and are proprietary – meaning if they close down, any work you’ve done creating content could be gone forever.

In comparison, LON-CAPA is open source (released under the popular GPL license) and free for students.  The only real cost is associated with running a dedicated server and the minimal maintenance of the software.  It is also very flexible in how the problems can be presented to the student, as long as you’re willing to put the effort in to learning the details of the system (which is not trivial; it’s written in the programming language Perl).  There is also only minimal support available to faculty from LON-CAPA itself, although there are good online documentation and a mailing list for users that is responsive to any questions you might have.

At Ontario Tech University, we use LON-CAPA to deliver Mastery Modules to students in our large first-year physics courses, as well as more traditional homework for our astronomy courses.  A Mastery Module is a set of problems particular to one topic, and is designed around four research-based principles of homework delivery:  delayed feedback improves recall of facts (Roediger & Butler, 2011); a mastery learning setting, in which students must attain a specific level of success before moving on the next level, improves student learning; novice problem-solvers tend to classify problems by surface features rather than underlying physics concepts (Chi, Feltovich, & Glaser, 1981), and that narrated video solutions improve the learning in a mastery setting (Schroeder et al. (2015).  To see a demo of our Mastery Module system, click this link.


  • A dedicated physical or virtual server to install and run LON-CAPA.  This might include some IT support for installation and minimal maintenance required once LON-CAPA is running (e.g., occasional software updates).
  • A web browser.

Steps for Implementation

View a student-centric view of using LON-CAPA to answer homework problems.

View a student-centric view of answering questions in a Mastery Module from Ontario Tech University

Step 1. Create homework problems

Note: You don’t need to do this step – the LON-CAPA network already includes a large number of questions written by other users.  So, feel free to browse around first!  But let’s assume you do, in fact, want to write some new problems specific for your course.

After logging in to LON-CAPA, choose your “Author” role to be taken to the Authoring space, where you can create and organize new content for your course.  You might want to create a new directory to store this content, which you can do using the drop-down link in the upper right corner.  Then you can create your first new problem – use that same drop-down box,
but select
 “New problem” this time.  LON-CAPA offers a wide variety of different question types, so explore here.  But to keep things simple this time, choose a “Numerical Response” problem; this will allow us to create an algorithmic problem that uses random numbers to deliver a unique question to each student.

We’re given an example problem, which you can then Edit to modify it to the problem you want.  You can either edit the raw XML code of the question or use the graphical editor; in either case, you can choose variables you’ll need and write the actual question text in the editor.  Clicking “Save and View” at the bottom will take you to the actual question, which you can test out.

Finally, once the question is finished, there’s one more step we need to do.  LON-CAPA adds the question to its database through “Publishing” it.  This will allow you to actually use the question in a course later on. You can either publish a question on its own with the button at the top left, or publish all questions in a directory at once.

Figure 1: The LON-CAPA problem editor. The editor allows you to make changes to a problem, including variables, text, units, and parameters.
Figure 1: The LON-CAPA problem editor.

The editor allows you to make changes to a problem, including variables, question text, units, and parameters. View a video showing how to create problems in LON-CAPA.

Step 2.Create a course.

From the User Roles page that you see when you first log in, select “Request Course” at the top of the screen.  This will take you through a series of options for creating a new course — a description, the dates of the course, and who will be the course coordinator (by default, you).  Submitting the request will either create the course (if you have permission) or wait until the domain administrator approves the request.

Upon entering the new course for the first time, you will be asked a few more questions to finish setting up the course, including whether to have chat or discussion board features active.  Clicking “Save” at the end finishes the process — you now have a new course!


Figure 2: Setting up your new course in LON-CAPA.
Figure 2: Setting up your new course in LON-CAPA.

View a video showing how to create a new course in LON-CAPA.

Step 3.  Add content to the course.

In the course page, you can organize and add new content by selecting the “Course Editor” link at the top of the screen.  Let’s make our first homework assignment.

First, create a new folder to hold the content for the homework by clicking “New Folder” and giving it a name (like “Homework 1”).  Click on the new folder that was created to go to that area.  (
Note: every time you change something in the editor, LON-CAPA will ask you to re-initialize the course; this is a pain, but you don’t have to do it for every step.)

To add homework problems, choose “Import” from the Main Content Editor, and then click “Import” again.  You’ll be taken to a new window that allows you to browse the resources in the LON-CAPA network.  Feel free to look around — each domain (usually a school) has different problems that you’re able to use.  To find content that you made, navigate to “/res/<your domain>/<your username>”.  Click the checkbox for the problems you want to import to your course, and then select the “Import” button.  You can then either finish importing and go back to the course folder, or continue browsing for resources.

Once back at your folder, you can view the problems, rename them, or reorder them.  Once you re-initialize the course and go back to the “Contents” link at the top of the screen, you can see the new problems that you’ve imported.  By default, problems are displayed one at a time, but you can put them all on one page by adding a “New Composite Page” instead of a new folder.

Figure 3: Browse resources and select problems you want to import into your course.
Figure 3: Browse resources and select problems you want to import into your course.

View a video showing how to add content to your course.

Step 4.  Set parameters for the content.

Although there is now content in the course, students won’t be able to access it until you set some basic parameters like opening date and due date.  To do that, go to “Settings” and “Content Settings” and select “Table Mode” (you can try the other options, but Table Mode gives the most flexibility).  

Once in Table Mode, select the content folder you want to set parameters for.  Then scroll to “Parameter Specification” to see what options you can set.  Selecting all will allow you to change all of them (but it’s a big list).  You can set a specific course section or even student here, too, but leaving those options blank will change the settings for the entire course.

Click “Update Display” and you’ll see a long list of options for the resources that you can set.  I recommend setting at least the Problem Opening Date and Problem Due Date, but you can look through them and see what else you can play with.  For example, you can set the maximum number of tries a student can make on any one problem before being marked incorrect.

 Once done, you can check that students can now see the homework problems by using the “Switch role” option at the top of the screen and selecting “Student.”  This gives you a view of your course from the perspective of a student.


Figure 4:
 LON-CAPA has lots of options for homework sets.

 View a video showing how to set parameters for your homework set.

Step 5. Add students to the course.

Finally, a course wouldn’t be complete without students.  To add students, go to “People” and then “Users” at the top of the screen.  This will take you to the User Management page.  You can add students one at a time or upload a file of all your students at once.  

The file should be in the CSV (comma separated values) format, and should contain at least a list of usernames (for example, student IDs).  It can also contain names, email addresses, section information, and so on. Choose the appropriate file and, if your spreadsheet has table headers, click “Ignore First Line,” then click “Next.”

You’ll be taken to a page where you can map the columns in the CSV file to fields in LON-CAPA.  Set the Username and whatever other data you have here.  Normally, you can set the Login Type to be “Internally authenticated” and set a temporary password.  Set the “role” field to “Student” and click “Update Users” to start the (sometimes lengthy) process of adding students to your course.

Once done, students should now be able to log in, select your course, and view and complete the homework problems you imported.

Figure 5: You can upload a CSV file with a list of students to add them to your course
Figure 5: You can upload a CSV file with a list of students to add them to your course

View a video showing how to add students to your course.

Top Tips for Success

  1. Use the XML editor.  Although LON-CAPA has a graphical editor for creating problems, the XML editor is faster and more customizable.  Once you write one question, creating similar questions is just a matter of copying and modifying the XML code.
  2. Create hints in problems.  It’s possible when writing LON-CAPA to add hints to questions — these can appear on a wrong attempt and can be tailored to the student’s response.  That means you can correct any anticipated mistakes students might make in working on the problem.
  3. Use random numbers to the fullest extent.  You can make the variables in each question fully randomized so that each student gets a customized question.  But you can also set a parameter (QuestionType) that makes LON-CAPA generate new random numbers each time the student attempts a question.  Finally, you can create a homework set by selecting a random pool of questions from a larger set, giving each student different questions.
  4. Make things look pretty by using CSS.  LON-CAPA is an older system and doesn’t look very modern, but the display of questions is just HTML — which you can customize by the use of CSS (cascading style sheets).  If you know how, you can change the font, backgrounds, or other elements of your problems.  We use this in our Mastery Modules to good effect.
  5. Learn Perl to be the ultimate customizer.  LON-CAPA is written in the programming language Perl, and if you’re willing to learn how to program in it, you can do just about anything.  LON-CAPA offers access to every part of a question and the database of attempts, so how you display your questions and interact with the student is up to you.

Further Reading

  • Bonham, S. W., Deardorff, D. L., & Beichner, R. J. (2003). Comparison of student performance using web and paper-based homework in college-level physics. Journal of Research in Science Teaching, 40(10), 1050–1071.
  • Roedger, H. L., & Butler, A. C. (2010). The Critical Role of Retrieval Practice in Long-term Retention. Trends in Cognitive Sciences, 15(1), 20.
  • Guskey, T. R., & Gates, S. L. (1985). A synthesis of research on group-based mastery learning programs. Paper presented at the annual meeting of the American Educational Research Association, Chicago. (ERIC Document Reproduction Service No. ED 262 088)
  • Chi, M. T. H., Feltovich, P. J., & Glaser, R. (1981). Categorization and Representation of Physics Problems by Experts and Novices. Cognitive Science, 5(2), 121.
  • Schroeder, N., Gladding, G., Gutmann, B., & Stelzer, T. (2015). Narrated animated solution videos in a mastery setting. Physical Review Special Topics-Physics Education Research, 11(1), 010103.

Digital resources/ Templates/ Examples


Joseph MacMillan is an Associate Teaching Professor in the Faculty of Science at Ontario Tech University, where he teaches physics and astronomy courses.  His interests include astrophysics, especially black holes and dark matter, and physics education research.  Joseph holds a PhD in Physics from Queen’s University in Kingston, Ontario, and has been at Ontario Tech since 2007.





Share This Book