This document provides a quick introduction and overview of the quizgrader package, which is a package for managing and administering auto-graded online quizzes.

Very briefly, here is how it works:

  1. You (= instructor) create quizzes as Excel files using a provided template, then deploy online.
  2. You give your students the Excel quiz files - minus the answers :).
  3. Students fill out the quiz sheets and upload them using a simple web interface.
  4. Quizzes are auto-graded on upload, grades recorded, students receive immediate feedback.
  5. You retrieve submissions/grades, analyze them and compute final grades.

If this sounds potentially useful, read on.


I regularly teach online. In the past, I have used our university’s learning management system (LMS), but I dislike it because it is not user-friendly and elements, such as quizzes and student submissions are locked up inside the LMS and one can only extract very rudimentary statistics. Because of this, I have over the last years slowly moved away from our LMS and tried to replace as much as possible with resources that are as open as possible.

One feature I liked about the LMS is that it could administer auto-graded quizzes, so once the quiz was written, I didn’t have much to do anymore, students just submitted and got graded automatically each week. I tend to give lots of small quizzes (generally 1-2 per week), so I needed this process automated.

I decided to write some R code to get the functionality I needed. It turned out well enough that I figured it could be worth turning it into a full R package and making it available to others.



After having installed and opened R/Rstudio, you can install the package from CRAN by typing the following into the R console (the bottom left window if you are using RStudio):


Alternatively, you can install the latest development version (with usually both more features and more bugs) from github, using the remotes package. The following commands, typed into the R console, will get you up and running:

install.packages('remotes') #if not already installed

The package depends on other packages, which will also be installed as needed. Package installation is a one-time process, unless you update or re-install R itself, or want to install a newer version of quizgrader.

Package use

You can make, deploy and analyze student quiz submissions entirely interactively through Shiny apps. Alternatively, you can do all quiz management processes without using the Shiny apps. The tutorials explain both approaches. Here are the steps in overview format.

Quiz Preparation

As a teacher, you will start by going through these steps:

  • Start a new course that will contain all your quizzes.
  • Create your quizzes (using a provided Excel file template).
  • Create a roster of students (also using a provided Excel template).
  • Process complete quizzes to generate quiz sheets/files that are given to students for filling out.
  • Process everything else and deploy to a Shiny server.

Quiz submission

Once the quizzes are deployed to a Shiny server, you tell students the submission website. Before each quiz deadline, students go to the website, upload their filled quiz sheet. The quiz is auto-graded, the grade is recorded and students are being given immediate feedback.

Quiz management

You can download the student submissions while the course is running, analyze the results to investigate individual students or individual questions. You can also make adjustments to the student roster and the quizzes (e.g. modify upcoming quizzes). At the end of the course, you can make final manual adjustments and compute the overall grade.

Next steps

To learn more and see how to get started creating a course and a set of quizzes, see the Creating Quizzes tutorial.

Some general comments regarding quizgrader

Privacy, Security and FERPA

You might want to consider privacy and security as it applies to various laws (e.g. FERPA) when using this app. You will be placing a list with student names, IDs (e.g. emails) and their quiz submissions/grades into the cloud. There is no default public access to any of this information, you (or TAs who have login privileges) are the only one who can access those documents. It thus seems ok to me. But if the server where you host the submission app gets compromised, this might compromise student information. I consider this a low and small risk, but it’s something you might want to think about.

Excel is evil

I know the potential problems that can occur when using Excel. I originally started this project with CSV (actually, TSV) files. I ended up deciding to go with Excel because instructors, and most importantly students, are familiar with it. This means you need to be careful about Excels over-eager auto-processing, especially of dates. Specific warnings are provided throughout the tutorials to alert you to potential issues. In my experience, if you were careful creating the documents, it shouldn’t cause problems on the student side.