# Setting assignments

Nuvolos supports the creation, dissemination, and review of assignments, without having to download, upload, and send files around.

{% hint style="info" %}
Always use the *Master* (instructor's) instance to create an assignment.
{% endhint %}

## Creating an assignment

An assignment is a collection of Nuvolos objects (e.g. files, folders) and an associated deadline until which the students can hand in their work.

An assignment is created during [material distribution](/features/nuvolos-basic-concepts/distribution.md) by selecting the "Create an assignment" checkbox. In this case, the deadline until which hand-ins are accepted needs to be selected (after the deadline passes, students can no longer hand in material). You also need to set a [hand-in size limit](#hand-in-size-limits-storage-considerations).

Created assignments are visible on the dashboard of a space, as well from Assignments overview page, that can be accessed from the left sidebar. The page and the icon only become active once an assignment has been sent out in the course.

Note that you should only include objects in the assignment which students are expected to *change and hand-in* for the evaluation. Let's see some examples:

### 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](/features/nuvolos-basic-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 don't recommend sharing more than a few 100 MB of dataset data using distributions. Consider using [Large File Storage](/features/file-system-and-storage/large-file-storage.md) for larger datasets.
{% endhint %}

### Hand-in size limits, storage considerations

When you create an assignment, the system will ask you to set a hand-in limit between 1 MB and 100 MB. This limit is going to be enforced for every hand-in for every student. Note that the limit applies for **all files combined** — in case your assignment has multiple files, their total combined size must not exceed the set hand-in limit.

If the total size of the submitted files exceeds the hand-in limit, students will see an error message preventing the submission and indicating that the hand-in size limit has been exceeded. They will need to reduce the size of their files before they can submit successfully.<br>

Why are hand-in limits important?

When an assignment contains a folder, often unintended files are left inside these folders which consume considerable storage space, e.g. entire python virtual environments, data dump files, etc. Whenever a student hands in 10 MB of data, it gets copied over to the [Distributed instance](/features/object-distribution/the-distributed-instance.md) **twice** — once the hand-in, which is read-only for all users, and once the hand-back, which is editable for the instructors. Without such limits, the Distributed instance can quickly run out of storage space, preventing further hand-in for everyone! Should such a scenario arise, resource pool managers can still [increase the storage quota](/administration/monitoring-resource-usage.md#modify-instance-quota) to make room for new submission files in the Distributed instance.

{% hint style="info" %}
If you've created your assignment before the hand-in limit was introduced, the system will ask you to set a limit the next time you change any settings related to it. Setting a hand-in size limit does not impact submissions made before, and can be changed later anytime.
{% endhint %}

### Viewing the assignments

As described in the previous section, the assignment overview page provides a more detailed description of the assignments in the space. Here you will be able to check the submission and the assignment status. From red to green, colors indicate how much time is still left to hand in solutions.

## Modifying assignments

Space administrators can modify assignments (deadlines, descriptions and handback visibility) from the assignment overview page:

1. Under the **Actions** column, or by
2. Opening an assignment from the space overview directly, or
3. From the assignments overview page by clicking on the edit button under the details.

## Reviewing assignments

To grade assignments, a space administrator can click the "Grade" button on the assignment view. This will open the grade table, from which each assignment hand-in can be opened by clicking the "Review" button.

This will launch the application inside the student instance, with a **copy** of the student submission mounted in the files area. All packages installed by the student will be available for the instructor, so open-ended projects are fully supported as well.

The files submitted can be downloaded without opening an application under the handback tab. You can select which handin to review from the dropdown menu.

{% hint style="info" %}
Students are allowed to submit solutions multiple times until the assignment deadline has passed. However, Nuvolos only allows you to grade the latest submission coming from the same instance, and by default, only these submissions are shown on the Handin tab. To inspect non-latest hand-ins, uncheck the "Show only gradeable handins" checkbox on the Handin tab.\
\
Also, the name of each submission may be chosen freely by the students to support using custom identifiers (e.g., student ID number, etc.). Nuvolos will group submissions coming from the same instance as different versions coming from the same entity, and only the latest submission will be gradeable, even if there were different submissions in the same instance by different users under different names.
{% endhint %}

#### Providing feedback

Feedback can be provided inside the submitted files in any form the instructor sees fit (Nuvolos maintains a copy of the original handed in file for reference if needed).

We suggest making explicit (inline) comments so that it is clear to the student when reviewing the hand-back what has been the instructor's (I) comment. An example is below:

```
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 the files have been reviewed, the instructor can assign a grade by clicking the grade icon on the sidebar, which brings up the grade table. There the currently graded instance/hand-in will be highlighted and a grade can be entered as free text.

## Handing back assignments

During the grading process, the hand-backs are not visible to students. Once the review of all hand-ins is completed, the assignment can be edited as described above and the visibility of hand-backs can be enabled.

By opening the assignment view, students will be able to view their grades and also launch the application with the corrected files available for review (without being able to modify them).

When students start their applications after hand-backs have been enabled, they will see a special Assignments > handback folder, which will contain the reviewed version of the material (read-only). They can then check the reviewed file for feedback from the instructor. Or alternatively they can view the files under the handin and handback tabs from the assignment view.

## Exporting grades

Grades can be exported from the grade table in Excel format which can then be used to upload to other systems if needed.


---

# Agent Instructions: 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/user-guides/education-guides/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.
