Getting Started: Student Making a Submission
This is a companion piece to Creating an Assignment and Canvas Assignment Setup and Launch — this time from the student's seat. To show it concretely, we signed in as a student enrolled in a live Canvas course called Demo, launched the MySQL Querying assignment linked to Lab.Computer, worked through it in a real notebook environment, and submitted — including one deliberately wrong answer, because most real submissions aren't perfect on the first try.
Launching from Canvas
Canvas assignments backed by Lab.Computer show up like any other assignment. The page loads with a short external-tool notice and a single button — Load MySQL Querying in a new window. Canvas also keeps its own submission history for the assignment, visible in the sidebar alongside whatever grade the last attempt earned.

Clicking through hands the student's identity and the assignment context to Lab.Computer in the background — nothing to log into separately, no account to create. The new tab opens straight into a working notebook environment tied to that specific student and assignment.
Inside the notebook: nothing to install
The environment that opens is a full JupyterLab-style workspace: a file browser on the left (here holding mysql_basic_querying.ipynb, a generated_svg folder, and a mysql_setup.yaml config), the notebook itself in the main pane, and a top bar tracking submission status. This particular assignment opens on a Learning Objectives section and an introduction to the school database schema the exercises query against.

A live terminal tab sits alongside the notebook (root@dc-notebook-...), and it's worth checking before touching any of the exercises: running mysql --version && service mysql status shows MySQL 8.0.46 already installed and already running, with an uptime measured in seconds since the container started — not since some setup step the student had to perform. There's no pip install, no apt-get, no database server to stand up. The assignment's mysql_setup.yaml provisions and seeds the database automatically when the server starts; the student's job begins at writing queries, not at configuring an environment.

This is the same pattern covered in Creating an Assignment — instructors choose the hardware tier and any setup during authoring; students only ever see the finished result, already running.
Working through the problems
Problem 1 asks for a query that returns student contact information without using SELECT * — first_name, last_name, and email, explicitly. The test cell below it checks three things: the right columns come back in the right order, the query text doesn't contain SELECT *, and every email value actually contains an @. Running it prints a clean pass.

Problem 2 is a filter query for students on the Dean's List — GPA of 3.5 or above. The assignment's own instructions call out a specific trap: use the >= operator, not >, or a student sitting at exactly 3.5 gets silently dropped. It's an easy mistake to make in a hurry, and this submission makes it — the query uses > instead of >=. Restarting the kernel and running the whole notebook top to bottom (Run → Restart Kernel and Run All Cells...) executes every cell in order and surfaces the failure honestly: an AssertionError reading Query should use >= operator, not > operator, right where the test expected the boundary case to pass.

Not every submission is a clean pass, and that's fine — this is what a real, partially-correct attempt looks like, assertion trace and all. Auto-graded cells score exactly what they check; a wrong query fails its own test rather than failing silently.
Submitting and seeing the grade
With Problem 1 correct and Problem 2 wrong, clicking Resubmit in the top bar re-runs and re-grades the notebook server-side. The button shows Submitting... while that happens, then settles back to Resubmit with an updated Last submit on timestamp — confirmation the attempt was recorded, not just executed locally.
Back on the Canvas side, the assignment page reflects the same submission and its grade — partial credit, well short of full marks, matching exactly what passed and what didn't in the notebook. Canvas doesn't need to know anything about Python asserts or SQL syntax; it just displays whatever score Lab.Computer reports back through the gradebook connection set up in Canvas Assignment Setup and Launch.

What's next
From here, the instructor's side of this same submission — reviewing it, seeing the failed test case, and adjusting or confirming the grade — is covered in Getting Started: Grading Assignments.
Related posts
How to create, configure, and release an assignment on Lab.Computer — from choosing hardware resources and timeouts to generating and publishing the final version.
How to configure a Canvas assignment as an External Tool that launches into Lab.Computer, and what students see when they launch — the second step after Canvas LTI registration.
How grading works on Lab.Computer — reviewing submissions, understanding auto-graded test cases and MCQs, overriding scores manually, and exporting final grades.