Creating a paper-based assessment

The tutorial's focus is on creating paper-based individualized examinations with isomorphic questions. Digital examinations are inherently insecure, whereas paper-based examinations offer a significantly higher level of security. The questions we author can still be exported to learning management systems or digital assessment platforms. For take-home assessments and practice exams, these digital formats can be convenient.

Here is a set of steps to guide you through creating paper-based assessments. While there are a number of steps, most involve one-off preparation (such as installation) and creating examples.


One-off preparation

Installing the .NET SDK

  1. Download .NET SDK from Microsoft: https://dotnet.microsoft.com/en-us/download/dotnet/8.0. We will use version 8 (LTS: long-term support). Please pick the installer that supports your operating system and platform.
  2. Open a console window (PowerShell on Windows, Terminal on MacOS, or bash on Linux), and type in the command: dotnet --version. If the .NET installation was successful, you will get a response such as 8.0.404 in the command line.

Installing the Dividni framework

The instructions below are for Windows. A similar process can be followed for MacOS and Linux.

  1. Download the current Dividni framework.
  2. Unzip the content into C:\Dividni.
  3. Add to your PATH the location where you unzipped Dividni. On Windows, this can be achieved by typing Advanced system settings in the Windows search bar, clicking on "View Advanced system settings", clicking on "Environment Variables...", double-clicking on "Path", clicking "New", and typing in C:\Dividni. Click a series of Ok to exit all windows.
  4. Open a console window (PowerShell on Windows, Terminal on MacOS, or bash on Linux), and type in the command: dotnet C:\Dividni\McqTestGen.dll -version. If the .NET installation was successful, you will get a response such as McqTestGen version 24.11.12 in the command line.

Creating our first exam paper

An exam paper requires two components: (1) a cover page (or prologue) containing details of the exam as well as instructions for students, and (2) questions.

We have provided a sample cover page and sample questions to get started before creating your own. Please download these from https://dividni.com/tutorial/samples.zip, and extract them to a suitable folder such as C:\Users\John\samples.

Recall that we programmatically create several instances of the exam paper - in fact, as many instances as there are students. The cover page is an HTML document while each question is a C# document (C# program, that is). We don't need to worry about the details at this point.

The tool McqTestGen (part of the Dividni framework) is used to generate multiple instances of an exam paper.

The instructions below are for Windows. A similar process can be followed for MacOS and Linux.

  1. Open a console window (PowerShell on Windows, Terminal on MacOS, or bash on Linux).
  2. Navigate to the directory where the samples are: for example, cd C:\Users\John\samples
  3. Issue the command: McqTestGen.exe -prologue SampleCover.html -paperCount 2 ApplesAndOrangesMCQ.cs The option -prologue sets the cover page to the given page description in SampleCover.html, and the option -paperCount specifies that we are after two instances of the exam paper. A successful execution of the command will produce two files: 000000.html and 000001.html containing two exam scripts. Double-click these two files to open them in a browser, and examine the generated exam scripts. Note the differences between the questions in the two exam scripts and the version number included in each scripts. The last two digits in the version number are checksum digits, while the rest of the digits contain the actual version.
  4. Increase the -paperCount value (e.g., to 4) and examine the additional exam scripts generated.
  5. You can try adding the option -startID with a value, such as 42, to specify the starting version of the script.
  6. Use the following command to generate exam scripts with marked answers for proofing: McqTestGen.exe -proof -prologue SampleCover.html -paperCount 2 ApplesAndOrangesMCQ.cs where we have added an extra option -proof. The correct answers will be marked with a *** prefix.
  7. In addition to the .html files, McqTestGen generates .txt files that contain the answer codes (which can later be used to auto-grade student responses). Open the answer files 000000.txt and 000001.txt to examine their content. The answer files have three tab-separated columns: the first value is the question number, the second is the answer code, and third is the mark associated with the question. The answer code works as follows: 1 is option A, 2 is option B, 4 is option C, 8 is option D, and 16 is option E. These .txt files are used during the grading process.
  8. Issue the following command to generate exam scripts with three questions: McqTestGen.exe -prologue SampleCover.html -paperCount 2 ApplesAndOrangesMCQ.cs PrancingPonyLocationMCQ.cs QuadraticEqMCQ.cs where we have added two additional questions. View the generated exam scripts on a browser.
  9. Try a print preview of one of the exam papers you created in the previous step. You can insert .xx markers, as shown in the example below to add page breaks where you want: McqTestGen.exe -prologue SampleCover.html -paperCount 2 ApplesAndOrangesMCQ.cs PrancingPonyLocationMCQ.cs .xx QuadraticEqMCQ.cs. In this example, a page break is inserted after the first two questions. You can add as many page break markers as needed.
  10. Marking exams by hand, especially for a large class, is time-consuming and prone to errors. Therefore, it is advisable to have students fill in their answers on OMR sheets, which can then be graded automatically using McqGrader. McqTestGen can generate OMR sheets pre-filled with version numbers. Try the command: McqTestGen.exe -startId 42 -paperCount 200 -prologue SampleCover.html -omr OmrTemplateSouthernHem.svg ApplesAndOrangesMCQ.cs PrancingPonyLocationMCQ.cs .xx QuadraticEqMCQ.cs This generates 200 exam scripts, each script containing OMR answer sheets pre-filled with version IDs.
    We can customize the OMR sheet, for instance, including our own institution's logo. We can do this online at https://dividni.online/OmrEditor/.

Creating a prologue page/section

The prologue page/section is authored in HTML. It uses start and end tags to format text and other content. The start and end tags should match, and are case-sensitive. The first level heading is called h1 and the start and end tags for this are <h1> and </h1> respectively. Therefore, we would specify a first level heading in HTML as <h1>My First Level Heading</h1>. Similarly, a paragraph is p and the start and end tags for this are <p> and </p> respectively. A <div> groups several HTML elements (such as <h1> and <p>) together.

The prologue page/section contains a single <div> which in turn can contain other arbitray HTML elements. Examine the sample cover page SampleCover.html to see if that makes sense. You can try making content changes to this sample cover page. For instance, you may want change the university name to reflect your own university/institution, and also the course name to reflect something you teach.

You cannot have an ampersand (&) character in HTML: this has to be coded as &amp;. Similarly, the less-than sign (<) has to be coded as &lt; and the greater-than sign (>) has to be coded as &gt;. Recall that the start and end tags should match, and are case-sensitive. Please keep these rules in mind as you make minor adjustments to the cover page.

Major designs for exam prologue page/section is typically done one-off at the institution level, and proficient HTML coders can do this for us.


Creating a question

Proficient C# programmers can use C# to create questions. Most of us are not likely to be in this category. However, we have the means to create these C# questions online without having to program. Dividni.online allows us to create such questions online.

  1. Static answer banks. These are the easiest to create. We need to write the question, specify a set of correct answers (more the merrier), and specify a set of incorrect answers (again, more the merrier). We can preview the question (and all the answer options), and once we are happy we can download a C# version of the question to use with McqTestGen.
  2. Parametric variants. These are more complex and allow for dynamic variations in questions.
  3. Create a few questions that are of value in a course you teach.

Once the question you created looks satisfactory, you can copy the C# code for the question to your local computer and use this with McqTestGen to create exam papers. See point 3 of section Creating our first exam paper.

Slightly advanced topics

  1. Including maths and formulae within questions or answers. This is done using LaTeX style inline equations.
  2. Including images. We can use the <img> tag in HTML to do this. We will need to host the image on a server, however. There are plenty of free servers (such as imgur) that allow us to host images, and we can make use of these if we don't have our own.
  3. Including a common instruction for a group of questions is possible, and an example is provided in ApplesAndOrangesMCQx2.cs. Try replacing ApplesAndOrangesMCQ.cs with ApplesAndOrangesMCQx2.cs in step 10 above, and view the generated exam paper.
  4. Styling the exam papers. This is possible via an external stylesheet. For example, try the following command that changes the font used in the exam paper: McqTestGen.exe -startId 42 -paperCount 1 -prologue SampleCover.html -omr OmrTemplateSouthernHem.svg -css exam.css PrancingPonyLocationMCQ.cs ApplesAndOrangesMCQ.cs .xx QuadraticEqMCQ.cs .\NationalCapitalsMCQ.cs Here we use the option -css to point to the external stylesheet exam.css.

Conducting exams

To conduct exams, we need to print the HTML exam papers. We have scripts that can automatically convert these HTML exam papers to PDF and merge them into a single PDF file for easy distribution and printing.