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.

Labs list with filter tabs and bulk actions


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 00:01:00: “Extra time after deadline to accept auto-submissions (accounts for network latency)”

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 declare public class Sum in Sum.java

  • Languages (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