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”

Virtual Lab Activity

A containerised lab environment, opened in the desktop app

Turning on Is an Exam makes a lab an exam — see Chapter 6.


5.1 The labs list

Counters across the top (all / visible / hidden / exams) and matching tabs. The button row gives you New Lab, Proctor, Export, Import, Repository, Recycle Bin, and — with two or more labs — Reorder.

Selecting rows raises a bulk bar with Show and Hide.

Your search, sort, filter, and page-size choices are remembered per course.

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

  • Is an Exam toggle

For a normal lab 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 Submit — space-separated file names, or any for no restriction

  • Instructor Solution and Documents file uploads

  • LanguagesC, C++, Python3, Simplecpp, Java

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

⚠️ Testcase reordering is not implemented. The button exists; its tooltip reads “Re-order: not implemented”.

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.

Submission limits

Max Submissions (default 100), Max Run Without Submit (default 100), and a toggle for the Run without submit button.

Students see their remaining attempts, and the banner turns red at 3 or fewer.

Rubrics for subjective grading

The Subjective Grading Configuration table holds Criteria, each with Ratings carrying names, descriptions, and marks. Save the activity before configuring rubrics.

Clicking + Rubric for the first time requests AI-suggested rubrics based on the activity; you can accept, edit, or replace them. You can also import rubrics from a CSV.


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.

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.5 Virtual lab activities

Container-based labs with Docker images, evaluation scripts, and up to four containers with custom networking. There is an option to monitor the activity, collecting file history, UI interactions, and terminal commands — intended for exams.

Virtual labs open in the desktop application, not the browser. Students click through to a clab:// link.

⚠️ Exam enforcement does not apply to virtual activities. The exam gate for virtual labs was designed but never implemented. Do not rely on exam mode to restrict one.

Virtual labs are not part of every BodhiTree deployment. If you do not see these options, your installation does not include them.


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, Push to Repository, and Export Activity.

Actions ▾ gives Recycle Bin, Submissions, Leaderboard, and Repository. Reorder works as elsewhere — drag, then Save Order.

The Repository

Push to Repository saves an activity for reuse across labs and courses. The Repository has tabs for programming and virtual activities, and you import from it when creating new activities.

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 and Virtual 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.

⚠️ Export covers Programming activities only. Quiz and Virtual activities are not included in a lab export. Do not assume an exported lab is complete.

Importing

Import accepts a .zip, either a single lab or several. A sample archive structure is downloadable from the dialog.

What you must fix after importing:

Imported as

You should

Every activity unpublished

Review and publish

Every lab hidden

Make visible when ready

Available from = now

Set your real start date

Available till = now + 365 days

Set your real deadline

Timing is never exported, by design. Always re-set dates after an import.

Duplicate titles get (1), (2) suffixes rather than overwriting. Each lab imports in its own transaction, so one bad lab does not abort the rest.


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, Bulk Submission, plagiarism checks, and grading requests

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

Submit As lets you upload for a student who could not. JTAs cannot do this — the action is blocked for them.


Known limitations

  • Recycle Bin covers Programming activities only — Quiz and Virtual are deleted permanently

  • Export covers Programming activities only

  • Testcase reordering is not implemented

  • “Allow varied delimiters” and Tab cannot be switched off

  • Bulk Upload Testcases, Import Testcases, and Configure Resource Limit dialogs are partially built — if one does not open, that is why

  • Import Lab covers programming activities only — quiz and virtual activities are not imported

  • Labs Performance in the sidebar shows “Lab Performance coming soon”

  • Labs are unusable for students on screens under 768px


Previous: 4. Course Content · Next: 6. Exams and Proctoring