When I started teaching, I usually made four versions of each of my exams in \(\LaTeX\). My exams were typically a mix of questions where students have to show their work, and some number of multiple-choice and true/false questions. While I was teaching calculus over the summer one year, I wanted to spend less time reordering and changing multiple-choice answers between exam versions, and more time making my tests accurately reflect students' course mastery. This project was my solution.
The code produces randomized versions of exams with questions of a variety of types. Short answer problems start with a base question that contains a number of different user-defined values. If the question has multiple sections of text that have randomized values, the randomizer can make the values correspond. Multiple-choice questions have one correct answer that is randomly placed, and a user-defined bank of wrong answers (or distractors) that are randomly selected for the other multiple choice options. True/false questions come with small alterations that can change the value of the questions, as well as the option to randomize the order of all of the true/false questions in a section. The code uses a default \(\LaTeX\) test-template, but this can be easily changed to match the user's style. The final product produces a .tex file with all the different versions along with an answer key. Different versions are distinguished with QR codes whose values are user-specified.
Originally, I made this project just for my own usage, but I have recently updated it to make it easier for others to use.