Qengine is a question type plugin for Moodle that was developed by Eric Fossas who graduated from CU CS in 2017 and has been working for us since May 2017. He has done an outstanding job developing this and I encourage everyone that has a use case to start using this software.
Qengine leverages powerful and extendable back-ends such as SageMath and Python and can produce questions from basic algebra, calculus, discrete math (graphs, trees), number theory, graph theory, etc. The architecture can be extended to support other programming languages and math packages as well.
Qengine works by producing a different version of the same question by randomizing question variables. When a student attempts a question, they will be presented with a different variation of the same question. It uses a random seed to build a question, so for every unique attempt, a new random seed is generated. The random seed is stored so the same question will be generated for every unique submission. This means when regrading and reviewing student submissions you will see the same question they were presented with.
Previously, this was somewhat accomplished by writing numerous versions of the same question and changing the variables which amounted to lots of work by TAs and cumbersome question/quiz management. This helps streamline that entire process by authoring single questions that randomize and provides uniqueness for every student.
CU CS Deployment- https://bengine.csel.io/
Here is the repository with all developed Qengine questions. If you do not have access please submit request to firstname.lastname@example.org