Assignments and submissions

Giving a class something to build, and getting it back.

The two kinds

An assignment points at one of two things.

A project. Any circuit: one of your own, one of the built-in projects, or anybody's public one. Assigning your own private circuit keeps it private: the students in that class can open it, read-only, and nobody else can. It does not go into the gallery, onto your profile or into search. You cannot assign somebody else's private project, which you could not open either.

A lesson. One of the built-in lessons, or one you wrote yourself. The student follows the steps in the editor and the simulator checks the circuit at each checkpoint.

Each assignment has a title, which defaults to the project's own name, and an optional due date. A class holds up to two hundred assignments.

Locking the starter circuit

An assignment is often a circuit the class is meant to build around rather than rebuild. Lock the parts and wires you want held and they stay where they are for everybody who opens it.

Select what you want held and press Lock in the properties panel, or use the canvas toolbar's more menu: Lock selection, Unlock selection, Lock all and Unlock all. Lock the code in the same menu holds the code of every board in the document; it carries a tick, so the menu says what is true.

The flags are on the document, so they travel with everything the document travels with: a share link, an export file, and the copy a student forks.

Who may take a lock off. Work opened from a class assignment belongs to the class, so only a teacher of that class may unlock it, and the role comes off the class the server hands back, not off the URL. A student who forks the assignment owns their copy and still may not unlock it, which is the whole point of a locked starter. Anywhere else, a lock is undone by whoever owns the project, which is you on the assignment you are building.

For you the lock is a badge rather than a wall: your own gestures are not refused. The room refuses a lock change from anybody who is not the project's owner on the server as well, so a modified browser changes nothing for anybody else.

The simulation never sees a lock. A locked part is an ordinary part to the engine, and the circuit runs exactly as it would have.

What the student sees

On their class page, the assignment with an Open button. Opening it takes them into the editor with that project or lesson loaded and the assignment attached to the session.

Submitting

In the editor, an assignment adds one more item to the Save menu: it submits the saved project to the class. That is the whole mechanism. There is no separate upload and nothing to attach.

For a lesson, their progress goes with it, so the dashboard shows how many steps they have passed rather than only whether they pressed a button.

What you see

On the dashboard, each assignment shows how many have submitted and a grid of the class against it. A student who has submitted a project gives you a link straight to it.

A student sees their own submission and nobody else's. That is enforced on the server, not in the page, which is why the student and teacher dashboards are the same code.

What changed

Each student works on a copy of the starter you gave the class, so the useful question is not what the circuit is but what the student did to it. Under each project assignment, What came back lists everybody who submitted with one line saying exactly that: 3 parts and 5 wires added, 1 wire removed, sketch changed. You can read a whole class off that list without opening anybody.

Changes on a row opens the rest of it:

  • Parts added, removed and moved, each with its type and its id.
  • Wires added and removed, named by the two pins they join rather than by their id, so a wire the student redrew between the same two points does not count as a change.
  • Properties changed, with the old value and the new one.
  • Net labels renamed, added and cleared.
  • Sticky notes put down, taken away and rewritten. A note that was only dragged somewhere else is not a change; a note is its words.
  • Code, as a line by line diff of every file that differs, on every board.

Underneath is the student's own circuit with the changes drawn on it: what they added glows in the accent, everything the starter had and they deleted is ghosted back in, dashed and dim, where the starter had it, and a part they dragged has a thin arrow from where it was to where it is. Hide the changes takes the drawing back to the plain circuit.

Two things deliberately do not show up. Locks (a held part, a held wire, read-only code) are how you set the exercise up rather than something the student did. And a submission you cannot open is a submission you cannot compare: a student's project is private until they make it public, so the row says so instead of guessing.

Removing one

Removing an assignment removes the submissions with it, and the page says so before it does.

A class room

An assignment that points at a project can carry a live collaboration room, so the whole class opens the same circuit together from their own class page and nobody has to be sent a link. The room holds the whole class (forty-one people) when the teacher is on Teacher or inside the trial, five people on Pro, and has no people limit on a school's plan. See rooms and how many people fit.

Also