> 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/tutorials/tutorials-for-instructors/your-first-course-on-nuvolos.md).

# Your first course on Nuvolos

<mark style="color:$primary;">**What you will achieve.**</mark> \
By the end of this tutorial you will have joined your institution's Nuvolos organisation, created a course, added teaching material, invited a student, and seen their first submission come back to you.

<mark style="color:$primary;">**How long it takes.**</mark> \
About 30-40 minutes, plus the time it takes for an invited student to act on your invitation.

<mark style="color:$primary;">**What you need before you start.**</mark> \
An invitation email from a Manager at your institution, with the Faculty or Manager role on a Nuvolos organisation. If you have not received one, ask your department head or IT contact - Nuvolos is invitation-only and you cannot create a course without organisation

{% stepper %}
{% step %}

### <mark style="color:$primary;">Step 1 - Accept your organisation invitation</mark>

Nuvolos is an invitation-only platform. As an instructor, you can be invited in two main ways: directly to an organisation (the path this tutorial assumes), or to a specific course as a co-instructor or TA (covered separately in the how-to guide on joining a course).

To create and manage your own courses you need to be invited to an organisation with the appropriate role. The roles available to you are:

* **Member** - typically for students. Does not allow you to create courses.
* **Faculty** - the standard role for instructors. Lets you create courses, enroll students, and manage course environments.
* **Manager** - has all Faculty permissions, and additionally can manage organisation settings and invite other Faculty members.

For a more detailed description of all roles, see [Roles and permissions](/concepts/roles-secrets-and-identity/roles.md) in the Concepts section.

For this tutorial, you need either Faculty or Manager. Open the invitation email from your institution and click Review Invitation. If you do not already have a Nuvolos account, complete the sign-up process; otherwise sign in. We recommend proceeding with the recommended option for your institution (for example, SWITCH for Swiss higher education institutions). Click Accept Invitation. The first sign-up may take up to a minute to complete.

{% hint style="success" %}
**Checkpoint**

You should now see your organisation's Dashboard. If you don't, refresh the page or sign out and sign in again. The Dashboard is where every course you create or co-teach will appear.
{% endhint %}
{% endstep %}

{% step %}

### <mark style="color:$primary;">Step 2 - Create your first course</mark>

A course in Nuvolos is an education-specific space - a workspace where you add learning materials (data, code, applications) for your students. Each course you create gets its own space, separate from every other course.

From the Dashboard:

1. Select **+ NEW COURSE**.
2. Enter a course name and description. You can also add a `README` file at this stage if you have one ready.
3. Select **+ ADD SPACE**.
4. (Optional) Select an application to add to the master instance of the new space - for example, a JupyterLab or RStudio image. You can always add applications later.
5. If you chose an application, enter a name for it and select **+ INSTALL**.

{% hint style="success" %}
**Checkpoint**

You should now be inside your new course, looking at the Master instance. The Master instance is the single place where you (and any TAs you invite later) develop and maintain teaching material - it is not visible to students by default. Everything you put here can later be distributed to every student in one step.
{% endhint %}
{% endstep %}

{% step %}

### <mark style="color:$primary;">Step 3 - Add a piece of teaching material</mark>

Course material is anything that supports learning: lecture notes, datasets, source code, slide decks. You always work in the Master instance - a sandbox dedicated to developing teaching material. You can run apps, upload files, and develop material directly here.

Pick one small file to upload now - a lecture PDF, a starter notebook, or a CSV. You can add more later.

1. Confirm in the breadcrumbs that you are in your new course and on the Master instance.
2. On the left sidebar, click the Folder icon to open the Files view.
3. On the top left, click **UPLOAD** and choose your file.

If you want to add a folder, compress it locally, upload the archive, and decompress it from inside one of your applications. For more on file management, see the [File Navigator](/reference/file-system-and-storage/file-navigator.md) in Reference.

{% hint style="success" %}
**Checkpoint**

Your file should now appear in the Master instance's file list. This file is currently visible only to you - students will not see it until you distribute it (the next step does that automatically as part of inviting them).
{% endhint %}
{% endstep %}

{% step %}

### <mark style="color:$primary;">Step 4 - Invite a student</mark>

With teaching material in the Master instance, you are ready to invite a student. For this tutorial, invite yourself using a personal email address (or a colleague who is willing to act as a test student) so you can see the full loop close.

From inside the course:

1. Click the Cogwheel icon and select **Course Users / Instances**.
2. Click **+ INVITE**.
3. The default option is User invitation with Invite to individual instances. Leave both selected - this gives each student a separate, private instance.
4. Choose how to send the invitation:

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><strong>Method</strong></td><td valign="top"><strong>When to use</strong></td></tr><tr><td valign="top">Invite link</td><td valign="top">Easiest option - share a link and anyone who clicks it joins the course.</td></tr><tr><td valign="top">Email</td><td valign="top">Better for smaller courses where you want to invite specific students.</td></tr></tbody></table>

For this tutorial use the Email method and enter your test address. Send the invitation.

Each invited student receives their own instance and cannot see the Master instance or other students' instances. Open the invitation email from your test address, click Review Invitation, sign up or sign in, and accept. You should now see the course as a student would - with the file you uploaded already present in your student instance, because joining a new course pulls in everything that has been distributed to it.

{% hint style="success" %}
**Checkpoint**

If your test student does not see your file, return to the Master instance, follow the distribute-to-prospective-students how-to guide once to push the file out, then re-check the student view. Tutorial 2 walks through distribution explicitly.
{% endhint %}
{% endstep %}

{% step %}

### <mark style="color:$primary;">Step 5 - Create an assignment and watch it come back</mark>

An assignment is a special type of [distribution](/concepts/distribution.md) designed for coursework. When you create an assignment, you distribute material to students and additionally:

* Set a deadline by which students must submit their work (a hand-in).
* Create dedicated storage for student responses and instructor feedback.
* Generate an audit trail of all actions taken in response to the assignment.

From the Master instance, prepare a small assignment file (for example, a notebook with one question, or a text file asking the student to reply with one sentence). Upload it as you did in Step 3 if it is not there yet.

Then create the assignment using the procedure described in the how-to guide on creating an assignment. Set a deadline a few minutes in the future so you can complete the loop now.

Switch to your test student account, open the assignment, make a trivial change to the file, and submit. Switch back to your instructor account - you should see the submission appear in the assignment's hand-in storage, ready to review.

{% hint style="success" %}
**You're done**

You have created a course, added material, invited a student, distributed an assignment, and received a submission. Every later piece of work - adding a TA, structuring a more complex course, running graded assignments at scale - builds on these five steps. The how-to guides in Part B cover each piece in depth.
{% endhint %}
{% endstep %}
{% endstepper %}

#### Where to go next

* If you want to bring in a colleague to help develop material, see [How-to › Invite teaching assistants and co-instructors](/how-to-guides/workflows-for-instructors/invite-tas.md).
* If your course has more than one application, dataset, or large set of materials, see [How-to › Structure your course](/how-to-guides/workflows-for-instructors/best-practice-structuring-your-course.md) for the recommended layout.
* To grade assignments and provide feedback, see [How-to › Assignments, grading, and feedback](/how-to-guides/workflows-for-instructors/setting-assignments.md).
* If you want to understand the model behind distribution, instances, and snapshots, see [Concepts](/concepts/nuvolos-basic-concepts.md).


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.nuvolos.com/tutorials/tutorials-for-instructors/your-first-course-on-nuvolos.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
