Exams
Authoring is instructor/admin-only, like the Course Builder Studio, reachable from the sidebar's "Exams" section or from within a course's Studio. Members get a separate, learner-facing attempt flow - see Taking an exam below and The learner experience.
What an exam is
A set of MCQ (one correct option) and MAQ (multiple correct options) questions, authored in a block editor much like a lesson's. An exam can be:
- Standalone - not tied to any course.
- Attached to a course - shows up in that course's Studio.
- Attached to a module - shows up in that specific module's Studio panel, and also counts as belonging to the module's course.
A course or module can have any number of exams.
Authoring
- From the Exams section (
/exams): create a standalone exam, or attach one directly to a course, via "New exam". - From the Course Builder Studio: a course or module's properties panel has its own "Exams" list and "New" button, pre-attaching the new exam to whichever is currently selected - no need to leave the Studio to start one.
Either way, creating an exam opens its own editor (/exams/{id}) -
title, an optional description, the question block editor, an optional
time limit and retry cooldown, a pass percentage, and a
Publish/Unpublish toggle.
Preview mode (instructor)
The editor's Preview toggle renders the exam interactively for the instructor while authoring: pick an answer, "Check answer" reveals correct/incorrect coloring against the stored answer key, same as the Matching block's own "Check answers." Nothing is persisted here - this is a self-check, not a real attempt.
Taking an exam
Members see attached exams in the same course outline as lessons
(/courses/{id}/exams/{examId}), a separate route from the instructor
editor above. "Start exam" begins a timed attempt (if a time limit is
set); a page refresh mid-exam resumes the in-progress attempt rather
than starting over. Submitting is auto-graded from the stored answer
key (grade_attempt) - correct/incorrect per question, total marks,
and pass/fail against the exam's pass percentage if one is set.
Submission is idempotent (re-submitting an already-graded attempt just
returns the same result), and an attempt that outlives its time limit
is graded from whatever was last autosaved, not from a late-arriving
payload - the timer can't be gamed by submitting late with fresher
answers. A retry cooldown, if set, blocks starting a new attempt until
that long after the last submission.
What's deliberately not built yet
- Reordering questions between an exam and its parent course/module (an exam's own questions are one flat, reorderable list; its attachment to a course/module is fixed at creation).