Appendix A. What Your Students See
Many instructor settings are invisible in your own view — you see everything regardless. This appendix maps each setting you control to the exact screen, text, or behaviour it produces for a student, so you can predict the effect before you save.
A.1 Before they are enrolled
What a student sees when they open your course URL depends on the course state:
Course state |
What the student sees |
|---|---|
Not published |
“This course is not available.” — nothing else |
Published, Open enrollment |
Course title + “You are not a registered student of this course. Please Enroll in this course.” + a green Enroll button. Clicking it enrolls them immediately |
Published, Moderated enrollment |
Same Enroll button, but clicking it puts them in the pending queue |
Enrollment requested (Moderated) |
“Your approval is Pending.” + a red Cancel Enrollment button. They cannot see any content until you approve them |
In the course catalog, each course carries a badge — “Open Course” (tooltip: “Course open to public.”) or “Moderated Course” (tooltip: “Course open only to approved students.”). This badge is driven by your Enrollment Type setting.
⚠️ Enrollment can fail for a reason that looks like a bug. Enrollment is capped by the course owner’s plan. Over the cap, the student sees “Max number of allowed students exceeded”. If the owner has no plan at all, they see “Your instructor does not own any plan…”. Neither message tells the student to contact you — they will report it as a broken button.
A.2 Publishing and the “Upcoming Content” state
Students only ever see published chapters, sections, and items. Everything unpublished is not merely greyed out — it is absent from the table of contents.
Where a student lands on something with no published children they see the literal text “Upcoming Content”. If your whole course has no chapters, they see “No Content”.
This means: a student reporting “I can’t find the assignment you mentioned” is almost always looking at an unpublished item. Check the publish state before investigating anything else.
Navigation also silently skips unpublished sections and chapters — the Prev/Next buttons in the content player jump over them. A student walking the course linearly will never know an item exists.
A.3 Multimedia Book quizzes — the three reveal settings
Three course-level settings control how much feedback a student gets. Their effect is significant and frequently misunderstood:
Setting |
ON — student sees |
OFF — student sees |
|---|---|---|
Reveal answer response |
Green “Correct Answer” / red “Wrong Answer! Attempts remaining: N” after each submission, plus their running score |
No feedback at all. The Submit button just submits. No score is shown on the question header |
Reveal correct answer |
A “Right Answer(s):” line listing the correct options |
Nothing — they learn only whether they were right |
(automatic) |
A blue Answer Description box, shown after a correct answer or once attempts are exhausted |
— |
The right-hand Questions navigator colour-codes every question: Right Answer / Partially Attempted / Not Attempted / Wrong Answer. Note that this leaks correctness even in some configurations — check it against your intent for a graded quiz.
Attempts: each question shows used/allowed attempts. When attempts run out the
Submit button becomes disabled and reads “Submitted”. The same happens once they
answer correctly, or if the question is set to manual grading.
Time gating: if you set a quiz start time in the future, the student sees the instructions screen with the Start Quiz button disabled, relabelled “Opens <date/time>”. Attempting the API directly returns “This quiz is not yet available. Please check the start time.”
A.4 In-video quizzes
An in-video quiz pauses the video and overlays the question. The student gets “↺ 5 sec” (rewind) and “continue” buttons.
⚠️ Students can switch in-video quizzes off. There is a “quiz enabled / quiz disabled” toggle directly under the player. Do not rely on in-video quizzes as a compulsory checkpoint — treat them as formative only.
Videos containing an in-video quiz get a purple QUIZ pill next to them in the table of contents, so students can see which videos will interrupt them.
If you attach a slides file to a video, students get a Download Slides button under the player.
A.5 Labs and activities
In the lab list students see: Name, Type (a flask icon tooltipped “Lab” or a document icon tooltipped “Exam”), From/Start Time, To/Duration, Eval Marks, Rubrics Marks.
A lab with visibility off is completely absent from the student’s list (unless it is an exam).
Unpublished activities inside a visible lab are likewise not rendered.
A student who never submitted sees
0/total, not a blank.Activity types are relabelled for students: what you author as an “other” activity appears to them as “lab quiz”.
⚠️ Labs are unusable on a phone. Below 768px the entire lab list is replaced by “Please use a bigger screen to access Labs”. Tell students this before an assessment.
show_marks_to_student = off on a lab quiz replaces the Eval Marks value with
“-”. Rubrics marks show “Not Available!” when no rubric is configured, and
“N/A” for lab quizzes.
Virtual activities do not open in the browser at all — they launch the desktop
app via a clab:// link.
A.6 Exams — every screen a student can hit
This is the highest-stakes surface, and students will contact you from each of these states.
Before you start the exam: the student sees a large Start button. Clicking it asks “Are you sure you want to start the exam?”. If you have not started the exam yet, they get the toast “Exam is not started yet” and nothing happens.
Started but awaiting approval: “Access not granted.” / “Please contact your instructor for more information.” plus a Refresh button. This is the state that generates the most support traffic during an exam — students see it whenever proctoring has flagged them for approval.
Blocked / ended screens are pushed live over a WebSocket, so they appear without a page reload, with a heading of “Exam Time Ended”, “Lab Time Ended”, or “Exam Access Blocked”, and one of these reasons:
Reason text shown to the student |
What you did |
|---|---|
“Your exam time has ended. No further submissions are allowed.” |
Time expired |
“You have been blocked from this exam. Please contact your instructor.” |
You blocked them |
“You have been marked as left by the instructor.” |
You marked them as left |
“You have been flagged by the instructor.” |
You flagged them |
“IP address conflict detected. Please contact your instructor.” |
Two students on one IP |
“Lab time has ended. No further submissions are allowed.” |
Non-exam lab deadline |
While this happens the student also sees their submission status change live: “Submitting your response…” → “Your response has been submitted successfully.” or “Warning: submission failed. Please contact your instructor.”
Ending the exam for everyone raises the toast “The instructor has ended the exam. No further submissions are allowed.” on every connected student.
Good news for deadline extensions: for non-exam labs, changes you make to lab settings (including an extended deadline) are pushed live. Students’ countdowns update without a reload. You do not need to tell them to refresh.
A.7 Programming assignments
Students get two submission routes and see a banner explaining both: upload a file via Choose File → Upload, or write in the editor and click Submit Code.
Attempts are shown in a banner — “You have N Submission attempt(s) left.” and “You have N Run without submit attempt(s) left.” — which turns red at 3 or fewer. Exhausting them produces a “Maximum Submissions Reached” modal.
Files you attach to the activity appear as download links and are loaded into the editor read-only; a student trying to edit one gets “You are viewing an instructor-provided file. Editing is not allowed.” and their change is reverted.
Deadline passed disables both upload buttons with the tooltip “Deadline passed”, and produces a “Lab Time Expired” modal on submit.
Testcases: students see your visible testcases under Practice Testcases and can download them. Hidden testcases are listed under Evaluation Testcases — check what you have marked visible. They also see per-testcase Runtime Error / Time Limit Exceeded buttons that open the actual stderr text.
Template-code activities give students a Reset Code button (“Are you sure you want to reset your code to initial instructor code?”) and a Final Compilable Code preview before submission.
A.8 Lab quizzes (the “other” activity type)
Autosave runs every 30 seconds, and the browser warns on close if there are unsaved edits.
Submission is a one-way door unless you allow multiple submissions. With multiple
submissions off, the confirm dialog is titled “Final Submission”, warns “This is
your final submission. You will not be able to modify your responses after this.”,
and the student must type the word SUBMIT before the button enables. With
multiple submissions on, it is a soft “You can continue editing and resubmit until
the deadline.”
If any question is blank the dialog warns “You have N unanswered question(s). You can still submit.” — it does not block them.
When the timer hits zero the quiz auto-submits. The student sees “Time is over. Your response has been submitted successfully.”
Required files: if you set a required-file count, students cannot submit until they attach them — they get “Please add N file(s) before submitting”. Their upload limit is 10 MB per file, and file-upload questions accept PDF, JPG, JPEG, PNG only.
Answers and marks are revealed only when the quiz is evaluated and submitted
and show_marks_to_student is on — or when reveal_answers is on and the lab
has expired.
A.9 Grades, leaderboard, and statistics
Grades: until you publish, students see “No grades have been published yet.” Their view shows an overall score banner and one card per grade sheet, with “Not graded yet” on ungraded sheets.
⚠️ Students see the legacy Grades page. The Grades V2 student view exists in the code but its feature flag is off in every environment, including production. Do not tell students to look for the new grades screen.
Leaderboard: students can toggle “Show Marks To Public” / “Hide Marks from Public” to control whether their own marks appear to peers. Participation in the public board is therefore not guaranteed.
Statistics (“My Statistics”) shows videos watched, in-video quizzes attempted, and labs submitted. This page is only present in the production build — it is off on development servers.
A.10 Discussion forum
Students can post anonymously. The checkbox is labelled “Post anonymously (identity will be revealed only to Instructor/TAs)” — so you can always see who wrote an anonymous post, and students are told this.
They can also mark threads important and pin them.
⚠️ You cannot edit a student’s thread — only delete it. Attempting to edit raises “Cannot edit student’s threads, only delete is permitted”. Plan moderation around deletion and replies, not correction.
A.11 BodhiBot
The chatbot appears only for students (never in instructor mode), only inside a course, and only if BodhiBot is enabled for that course.
Students can send it code selections, testcase details, and problem-statement text as context, and can expand “Show Bodhibot Thinking”. Every response carries the disclaimer “These responses are AI-generated and may be wrong.”, plus “Your chat is being recorded.” when logging is on.
⚠️ AI features (BodhiBot, CodeVaani) require separately deployed AI services. On a stock deployment they are not functional. Confirm with your administrator before promising them to a class.
Back to: Manual index