Course authoring

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).