5. Labs and Activities
Where: sidebar → Course Content → Labs
(/courseware/course/{courseId}/content/labs)
A lab is a container with a schedule. Inside it sit activities: the things students actually do:
Activity type |
What it is |
|---|---|
Programming Activity |
Write code, run against testcases, auto-graded |
Quiz Activity |
Questions, file uploads, subjective answers. Students see this as “lab quiz” |
5.1 The labs list
Counters across the top (All Labs / Visible / Hidden) and matching tabs. The bar below gives you a search box, Reorder (on the All Labs tab only, and only once you have two labs), a New ▾ dropdown holding New Lab and Import Programming Lab, and two icon buttons: Export Labs and Recycle Bin.
Selecting rows raises a bulk bar with Show and Hide.
Your search, sort, filter, and page-size choices are remembered per course for the browser session — they reset when you close the tab.

5.2 Creating a lab
New Lab opens a dialog:
Title: required
Instructions: click to edit, rich text
You then set:
Field |
Notes |
|---|---|
Available From / Available Till |
From must be before Till |
Submission Grace Period |
Default |
Leave the grace period alone unless you have a reason. It exists so a student who hits submit on the deadline is not failed by network lag.
New labs are created hidden. Make the lab visible when you are ready for students to see it.
5.3 Programming activities
From a lab, Create Activity ▾ → Programming Activity.
Basic setup
Title (required) and Description
Files to be submitted (required): comma-separated names without extensions, e.g.
Sum, Matrix. For Java this is also the class name — students must declarepublic class SuminSum.javaLanguages (required): at least one of C, C++, Python3, Simplecpp, Java
Instructor Solution and Documents file uploads
Advanced configuration
Linker Flags, Header Files, and per-language Additional Files for C, C++ and Simplecpp. Additional files are bundled automatically and appear in the student’s editor read-only.
Instructor-provided files are capped at 20 KB each, as are student submissions.
Testcases
The testcase table is edited inline: click to edit a row, or add a row directly. Each testcase has a Name, Input, Expected Output, Visibility, and Marks.
Visibility is the key decision:
Visible testcases appear to students as Practice Testcases, and they can download them
Hidden testcases appear as Evaluation Testcases
Actions ▾ offers Delete Selected, Bulk Upload Test Case, Configure Resource Limit, Expose Hidden Testcases / Hide Exposed Testcases, and Download All.
Bulk Upload takes a .zip package, with Visible to students and Marks per
case applied to the whole batch. You must save the activity first: “Please save the
activity first before importing testcases”.
Reorder opens a drag-and-drop dialog; it needs at least two testcases and saves immediately.
Resource limits
Configure Resource Limit sets execution limits per language group:
Setting |
Range |
|---|---|
Wall clock / CPU time |
1–240 seconds |
Virtual memory |
15 MB – 256 MB |
Stack size |
8 MB – 64 MB |
CPU time must be ≤ wall clock time, and stack ≤ memory. Defaults are in §10.2.
Child processes are limited to zero. Code that forks or spawns threads will fail whatever time limit you set.
Autograding
Option |
Effect |
|---|---|
Indentation percentage |
Weight given to indentation |
Ignore extra white spaces |
Whitespace-insensitive comparison |
Compare only numbers |
Extract and compare numbers only; adds an error bound and Order is not important |
Case sensitive |
Case-sensitive comparison |
⚠️ “Allow varied delimiters” and the Tab delimiter are permanently on. Both checkboxes render ticked and disabled; you cannot turn them off, despite appearing to be choices.
Rubrics for subjective grading
The Subjective Grading Configuration table holds Criteria, each with Ratings carrying names, descriptions, and marks. Save the activity first, or you get “Please save the activity first”.
The buttons are + ADD, Cancel, Submit, and Clear Rubrics.
5.4 Quiz activities (lab quizzes)
Create Activity ▾ → Quiz Activity.
Questions
Upload a .odt question file; the format is documented in
§10.5, and a Sample
Question File is downloadable from the dialog.
⚠️ Replacing a question file destroys student work. Uploading a new file over existing questions warns:
“Uploading a new question file will permanently delete all existing questions in this quiz activity. This will also delete all student responses and submissions for this activity.”
This is the most destructive action in the authoring interface. If a quiz is live, edit questions individually instead.
You can also build a quiz without any file and add questions by hand through Edit Questions, which supports Single Correct, Multiple Correct, Numerical, Fill Blanks, Descriptive/Paper, Text, and File Upload questions, plus Modules that group questions together.
Questions inside a module can only be edited from the Module Editor, not from the flat list.
Settings
Setting |
Effect on students |
|---|---|
Allow students to see their marks on quiz submission |
Marks visible, or replaced with |
Reveal correct answers to students |
Answers shown after submission |
Allow students to resubmit until deadline |
Turns a one-shot submission into an editable one |
The resubmission setting changes the submit dialog fundamentally. Off, students
must type the word SUBMIT to confirm a final submission. On, they get a soft confirm
and can keep editing.
Preview Quiz, next to Edit Questions, opens the student’s view of the quiz in a new tab.
The marks/resubmit combination is subtle. With resubmission on and marks on, marks stay hidden until the deadline passes, then appear. This is deliberate; it stops students from using marks as an answer oracle while resubmitting.
Required files
Set No. of Files and their names. Use any for no restriction. The count must
match the names you list, and every name needs an extension, otherwise
“‘helper’ is missing a file extension (e.g., helper.py)”.
Students cannot submit until they have attached the required number of files.
5.6 Managing activities
Inside a lab, the Activities card lists everything with per-row View Submissions, Edit, Delete, and a ⋮ menu offering Clone Activity and Export Activity (programming only). Delete is hidden unless you may delete content (§2.7).
Create Activity ▾ offers Programming Activity, Quiz Activity, and Import Activity.
Actions ▾ gives Recycle Bin, Submissions, and Leaderboard. Reorder needs at least two activities: drag, then Save Order.
The Recycle Bin
Deleted activities go to the Recycle Bin, from which you can Restore or Delete Permanently, individually or in bulk.
⚠️ The Recycle Bin only protects Programming activities. Quiz activities are deleted permanently and immediately with no recovery. Check what you are deleting.
If a restore fails because the parent lab is itself in the bin, restore the lab first.
5.7 Import and export
Exporting
Export on the labs list lets you tick individual labs, with an option to include submissions. Single-activity export is on the activity’s ⋮ menu (programming activities only).
A lab export carries both activity types: programming activities with their testcases and quiz activities with their question file. Activities in the Recycle Bin are excluded.
Importing
Import offers two modes — Import Single Lab and Import Multiple Labs — which
expect different archive layouts, so pick the one matching how the archive was exported.
Both take a .zip.
Despite the menu wording (“Import Programming Lab”), the import restores programming and quiz activities alike.
A lab arrives exactly as it was exported. Its dates, visibility, and per-activity publish states all come from the archive — they are not reset. Check and adjust them before students arrive; an imported lab can be visible immediately, with a deadline that has already passed.
Duplicate titles get (Copy), (Copy 2) suffixes rather than overwriting.
⚠️ A multi-lab import is not atomic. Labs are created one after another with no rollback: if one archive is malformed, the labs before it stay imported and the rest are never attempted.
The View sample archive structure link is not wired up yet — it reports “Sample archive structure documentation coming soon”.
5.8 Viewing submissions
Lab-level submissions show one column per activity, with bulk download and CSV export.
Activity submissions add:
Run ▾ and Force Run ▾: against Visible, Hidden, or All testcases
Filters ▾: submission status, evaluation status, rubric status, validity
View ▾: toggle columns, including one per testcase
More ▾: download as ZIP or CSV, and Bulk Submission
Submission statuses are Submitted, Compilation Error, Runtime Error, Time Limit Exceeded, and Not Uploaded.
Grading with rubrics
Open a student’s submission to get a split view: their code read-only on the left, your rubric on the right. Apply ratings and comments per criterion.
JTAs can grade here but cannot change the activity or its testcases.
Submitting on a student’s behalf
Bulk Submission (More ▾) lets you upload for students who could not. It is restricted to Instructors and Senior TAs; JTAs cannot do this.
Previous: 4. Course Content · Next: 7. Grades and the Gradebook