E3
Raw grade
Minimal raw grade
Maximal raw grade
Minimal actual grade
Maximal actual grade
Grade
32.30
76.35
55.00
110.00
Average grade
82.25
Reference-checking queries
Each of the following fields should be a valid
reference:
Answer.VersionID
Category.ParentID
ExamAnswers.AnswerID
ExamAnswers.ExamID
ExamReplies.ExamTakerID
ExamReplies.ExamID
ExamReplies.AnswerID
ExamTaker.ExamID
ExamVersions.ExamID
ExamVersions.VersionID
Question.MainCategoryID
Question.ActiveVersionID (including back
reference)
SecondaryCategory.QuestionID
SecondaryCategory.CategoryID
Version.QuestionID
Version.CorrectAnswerID (including back
reference)
Total
76.35
110
Weight
24
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1.5
1
1
1
1
1
1
1
1
1
1
1
1
1.5
1.5
1.5
1.5
1
1
1
1
24
Uniqueness tests
Each of the following items must be unique:
Answer by student to specific version in exam
Root in category tree
Versions of the same question in exam
(ID, ExamID) pairs in ExamTaker
(ExamID, NotebookNum) pairs in ExamTaker
(ParentID, Name) pairs in Category
(QuestionID, CategoryID) pairs in
SecondaryCategory
Total
14
2
2
2
2
2
2
2
1
1
1
1
8
Existence tests
Answer in exam implies version included in exam
Reply to exam implies answer included in exam
Exam in P or G status should have question
versions
Version in exam should have at least two answers
Question should have at least one version
Version in exam requires an answer with weight
100
Version in exam implies all its answer are in that
exam
Proper ordinals of answers to a version
Proper ordinals of questions in a category
Proper ordinals of subcategories in a category
Total
21
2.25
1.5
1.5
1
1
1
1.5
1.5
1.5
1
1
2.25
1
3
3
3
1
1
1
19.5
Value-range tests
Exam.Status in {P, U, G}
Exam.MinGrade <= PassingGrade <= MaxGrade
Exam.MinGrade < MaxGrade
11
0.5
1
1
1
1
1
Exam.Created <= Exam.Updated <= current date
Exam.Date >= Exam.Created
Exam in status U implies Exam.date >= current
date
0 <= ExamAnswers.Weight <= 100
ExamVersion.Weight >= 0
Version.Created <= Version.Updated <= current
date
Category.Name is nonempty
Exam.CourseName is nonempty
Exam factor constants can both be 0
Total
1
1
1
1
1
1
1
0.5
1
1
0.8
1
1
1
7.3
Statistics tests (not required; bonus points)
The following statistical values should be consistent
with the rest of the data:
Answer.AvgGrade
Answer.AvgPercentage
Answer.AvgCorrelation
Version.AvgDI
Version.AvgDifficulty
Total
10
Other
Category tree must not contain loops
Category tree must not contain self-loops (included
in above)
Non-root category must not contain '/' in name
Root category is named '/'
Exam in P or G iff exam's date < current date
Exam in P or G implies date >= updated
Exam in U must not have student answers
Same ID implies same name in ExamTakers
30
1.5
1.5
2
2
2
2
2
0
1.5
1.5
2.25
2.25
1.5
1.5
1
1
1
1
Does not compare to
current date
Secondary category of a question must not be
ancestor of its main category
Root must not be a secondary category of a
question
Main category of a question must not also be a
secondary category
Exam in status U must not have canceled questions
Exam in status U must not have inactive versions
Version with less than 2 answers or more than 10
Version with one mixable answer
Question must have an active version iff it is not
canceled
Checking for validity of <ref> tags
1.5
2.25
1
2.25
1
2.25
2.25
1.5
1.5
1.5
1
1
1
1
0.7
1.5
1
Total
Notes and Problems
Missing or wrong query descriptions in MDB file
No common prefix to invariant checkers
Queries return too much info (should only return ID
of problematic records)
Other errors
Total
20.55
-12
-3
-3
-3
1
-3
-3
Only one direction
tested
(Infrastructure
provided)
© Copyright 2026 Paperzz