Many universities use randomized question pools to prevent cheating in examinations. While this type of selection ensures high academic integrity, it can also introduce problems in terms of fairness due to varying levels of difficulty in the exams that students receive.
This creates a negative loop:
Random selection → Unequal difficulty → Student stress and complaints → Continued randomization → Repeated unfairness
To break this loop, we designed a system to ensure that students are provided with fair exams.
The Problem
Using random exam generators, there is no control over the difficulty of the exams that are generated. It is possible for a student to receive an exam with all easy questions while another student receives an exam with mostly hard questions. This introduces unfairness into the examination process.
Problems caused by traditional exam random generators:
No control over exam difficulty
No guarantee of even topic coverage
Randomization does not ensure fairness
High potential for unfair grading
Our Solution
We created the Blueprint-Based Fair Exam Generator.
This system allows for the creation of exams by first creating a blueprint for the exam. This blueprint dictates:
Number of questions per topic
Number of questions per difficulty level
Size of the exam
The exam is then generated by randomly selecting questions to fit the constraints defined in the blueprint. This guarantees fairness in the exam creation process.
Difficulty Score = Σ difficultyi
Where:
Easy = 1
Medium = 2
Hard = 3
By specifying the total difficulty score, we ensure that all generated exams will have the same total difficulty score.
Key Features
Blueprint-controlled exam creation
Fairness ensured using difficulty score
Randomized exam generation
Cheating reduced using variant wording
Visual fairness metrics and comparisons
Frontend-only implementation (no backend)
How We Built It
Tech Stack
HTML, CSS, JavaScript, and JSON
Architecture
Question Pool (questions.json)
Blueprint Engine (app.js)
Fairness Algorithm
UI Layer
Core Algorithm Logic
Rather than simply randomly selecting questions from the question pool, we created an algorithm that first groups questions by topic and difficulty.
Then, using a controlled process, randomly selects questions that satisfy the constraints defined by the blueprint and difficulty score requirement. This ensures that every generated exam is both fair and adheres to the specified criteria.
Log in or sign up for Devpost to join the conversation.