> For the complete documentation index, see [llms.txt](https://docs.nuvolos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nuvolos.com/how-to-guides/workflows-for-instructors/setting-assignments.md).

# Assignments, grading, and feedback

## Creating an assignment

<mark style="color:$primary;">**Outcome**</mark>\
You create an assignment by distributing a set of files with a deadline, after which students cannot hand in further work.

<mark style="color:$primary;">**Before you start**</mark>

* You are working in the **Master Instance** (always create assignments from the Master Instance!).
* The files you want students to work on are ready and located where you want them in the Workspace.
* You have decided on the hand-in deadline and size limit.

An assignment is a collection of Nuvolos objects (files, folders) plus a deadline. Assignments are created during material distribution - you tick the **Create an assignment** checkbox in the distribution flow. You then set the hand-in deadline and a hand-in size limit (see below).

Created assignments are visible on the space overview Dashboard and on the Assignments view in the sidebar. The Assignments icon and view only become active once at least one assignment exists in the space.

### Assignment with fixed files

Let's assume we've selected the following files for the assignment:

```
/Assignment1/instructions.pdf
/Assignment1/exercise.ipynb
/Assignment1/results.csv
```

In this case, the students have the instructions for the exercise in `instructions.pdf`. They need to complete the prepared `exercise.ipynb` file and execute all cells successfully, such that in the end a `results.csv` file is generated. During hand-in, all 3 files will be collected and copied to a new location for review and grading. This is ideal for simple exercises, because the format of the collected documents is fixed: students can only hand-in these fixed 3 files, and nothing else.

### Assignment with folders

There are cases where students need to have more freedom in what they want to hand. For example, the output format depends on the group exercise. In such cases, the instructor can add a **folder** to the assignment, like this:

```
/Assignment1/instructions.pdf
/Assignment1/solution
```

Now, students can put multiple different files/folders under the `solution` folder.

### Assignment with data

Sometimes assignments require datasets, e.g. training data for an ML model. In that case, a 2-step process is recommended:

1. First [distribute](/concepts/distribution.md) the dataset using normal distribution. Wait until the confirmation email arrives, then all students have the datasets already.
2. Then create the assignment *only with the files the students are expected to change*. Example:

```
/Assignment1/dataset -> share using normal distribution
/Assignment1/exercise.ipynb -> add only this to the assignment
```

{% hint style="info" %}
We do not recommend sharing more than a few hundred MB of dataset data via distribution. For larger datasets, use Large File Storage - see [Large File Storage](/reference/file-system-and-storage/large-file-storage.md).
{% endhint %}

## Set the hand-in size limit

<mark style="color:$primary;">**Outcome**</mark>\
You set an upper bound on submission size, preventing students from accidentally submitting large files (such as virtual environments or data dumps) that would fill up shared storage.

<mark style="color:$primary;">**Before you start**</mark>

* You are creating or modifying an assignment.
* You have a sense of how large legitimate submissions are likely to be.

When you create an assignment, you set a hand-in size limit between **1 MB and 100 MB**. This limit applies to all files combined in a single hand-in. If a student's submission exceeds the limit, they see an error and must reduce file sizes before submitting.

#### Why hand-in limits matter

When an assignment contains a folder, students sometimes leave large unintended files inside it - entire Python virtual environments, data dump files, and similar. Every 10 MB hand-in is copied twice into the Distributed Instance (once as the read-only hand-in, once as the editable hand-back for instructors). Without limits, the Distributed Instance can quickly fill up, blocking further hand-ins for the entire class.

{% hint style="info" %}
If you created an assignment before hand-in limits were introduced, the system will ask you to set a limit the next time you change related settings. Setting a hand-in size limit does not affect submissions already made.
{% endhint %}

## View and modify assignments

<mark style="color:$primary;">**Outcome**</mark>\
You change an assignment's deadline, description, or hand-back visibility.

<mark style="color:$primary;">**Before you start**</mark>

* You are a Space Administrator of the course.
* The assignment already exists.

Space Administrators can modify assignment properties (deadlines, descriptions, hand-back visibility) from the assignment overview page in three places:

* Under the **Actions** column in the Assignments list.
* By opening the assignment from the Space overview directly.
* By clicking the edit button under the assignment details on the Assignments overview page.

## Review and grade assignments

<mark style="color:$primary;">**Outcome**</mark>\
You open a student's submission inside the student's application, review their work, and assign a grade.

<mark style="color:$primary;">**Before you start**</mark>

* The assignment deadline has passed (or you are reviewing early submissions).
* You are a Space Administrator of the course.

**Open the grade table**

{% stepper %}
{% step %}
Open the assignment view.
{% endstep %}

{% step %}
Click **Grade**. The grade table opens with one row per hand-in.
{% endstep %}

{% step %}
Click **Review** next to a hand-in.&#x20;

The student's Application launches with a copy of their submission mounted in the Files area. All packages the student installed are available, so open-ended projects work end-to-end.
{% endstep %}
{% endstepper %}

To download files without opening an application, use the Handback tab. Use the dropdown menu to choose which hand-in to review.

{% hint style="info" %}
Students can submit multiple times until the deadline. Nuvolos only allows grading of the latest submission from a given Instance, and by default only these are shown on the Handin tab. To inspect earlier hand-ins, uncheck Show only gradeable handins on the Handin tab.
{% endhint %}

Students can use any custom name for their submissions (often their student ID). Nuvolos groups submissions coming from the same Instance as different versions from the same entity, and only the latest submission is gradeable - even if different users in the same Instance submitted under different names.

## Providing feedback

<mark style="color:$primary;">**Outcome**</mark>\
You add written feedback directly inside the submitted files and assign a grade.

<mark style="color:$primary;">**Before you start**</mark>

* You have opened the student's submission via the Review button.

Feedback can be added inside the submitted files in any form you see fit - inline comments, separate annotation files, code review notes. Nuvolos maintains a copy of the original hand-in for reference if needed.

{% hint style="info" %}
Use explicit inline comments so students can clearly see what came from you. A useful convention is to mark all instructor comments with a single-letter prefix, for example # I::
{% endhint %}

```sql
var = 1   # I: Use a more informative variable name

test_tuple = (False, "test")

if test_tuple:   # I: Use test_tuple[0] instead
    print("This should not appear.")
```

Once review is complete, assign a grade:

{% stepper %}
{% step %}
Click the grade icon on the sidebar.&#x20;

The grade table opens with the current hand-in highlighted.
{% endstep %}

{% step %}
Enter the grade as free text.
{% endstep %}
{% endstepper %}

## Hand back assignments

<mark style="color:$primary;">**Outcome**</mark>\
Students see their grades and the corrected versions of their files in a read-only handback folder.

<mark style="color:$primary;">**Before you start**</mark>

* All hand-ins have been reviewed and graded.
* You have decided to release all grades at once.

During grading, hand-backs are not visible to students. Once review is complete, edit the assignment (see *View and modify assignments* above) and enable hand-back visibility.

When students start their Applications after hand-backs are enabled, they see a special folder structure with the reviewed versions of their files (read-only):

<pre class="language-sql" data-overflow="wrap"><code class="lang-sql"><strong>Assignments/handback/&#x3C;assignment_name>/&#x3C;handin_id>
</strong></code></pre>

Students can also view the corrected files under the Handin and Handback tabs of the assignment view.

## Export grades

<mark style="color:$primary;">**Outcome**</mark>\
You export grades as an Excel file you can upload into other systems or share with administrative staff.

<mark style="color:$primary;">**Before you start**</mark>

* You have completed grading.

Open the grade table and use the export option to download grades as Excel.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nuvolos.com/how-to-guides/workflows-for-instructors/setting-assignments.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
