If you consider using Jupyter notebooks for your course, then noto will spare you and your students the JupyterLab installation overhead and provide you with a pre-configured, standard and stable environment in just one click. Noto currently supports Python, R, C, JavaScript and Octave.
You can use noto for your computer labs (as a replacement for using computer rooms or virtual machines for instance), for assignments, for student projects, for distributing your interactive textbook or for running your classroom demonstrations. Learn more about the different classroom uses of Jupyter notebooks here.
Note that your students need internet access to use noto: because noto is an online centralized service, offline use is, by definition, not possible.
Below is a list of frequently asked questions to help you get started with noto.
Technical or pedagogical questions? Our support team is here for you!
Frequently Asked Questions / FAQ
Noto comes with a very large range of pre-installed Python and R libraries. To find out which Python libraries are available, you can launch a terminal or create a bash notebook and type the command: pip list --format=columns
. Alternatively, you can also have a look at our documentation.
If the library you need is not in this list, you can install it for yourself using a virtual environment (more information in the FAQ below and here) or if you need it to be available for several people, e.g. your whole class, then please contact us and we will add it to the standard environment in noto.
If your class is larger than 100 students or requires quite a lot of computing power, or if you have any question about noto’s resources, we advise you to contact us: we will be happy to check together what we can do so that your class runs in the best conditions.
Noto has been designed to support large numbers of simultaneous users and our scalable architecture is able to adapt to peaks in concurrent connections. Nevertheless, the resources are not unlimited. Currently, Noto can run up to 20 parallel Jupyter backend servers to provide a total of up to 320 GB of RAM and 320 CPU, shared between all users. Our current policy is to allocate up to a maximum of 2 GB of RAM and 2 CPUs per user.
The resources you need for your class largely depend on the type of notebooks you use (e.g. intensive data processing vs. simple calculations). To give you an idea, the typical use requires a minimum of 250 to 500 MB of RAM and half a CPU per user. Running a more demanding notebook (with a larger dataset and some more intensive computations) may require more around 1 GB of RAM and 1 CPU per user.
Notebooks are simple text files, so they can easily be shared by usual means e.g. sent by email, uploaded on a website or on Moodle, etc. like you would do with any other type of document (pdf, doc, etc.). To download a notebook from your noto workspace to your computer, simply right-click on the notebook in the left pane of the noto interface, then select “Download” in the contextual menu. To execute a notebook that someone has shared with you, you can then simply upload it to noto by drag-and-dropping the file onto your workspace.
However, if you need to share more than one notebook or if you want your students to access your notebooks without downloading/uploading, then it is easier to use other means and for this noto supports sharing through git. You can clone and manage a git repository on noto as you would do on your own computer (learn more about using git in noto). Then, thanks to a simple tool called nbgitpuller, you can easily generate shareable links for any of the notebooks from this repository. Start creating shareable links for your notebooks here.
Because installing incompatible/untested Python packages in the default environment can break your default Python environment (the one that runs your jupyter server), access to the pip command outside of virtual environments has been disabled. Therefore, installing a new Python library is done in three steps: 1) first creating a new virtual environment and activating it, 2) then installing your Python library using pip install and finally 3) installing a Jupyter kernel in that environment.
Once this is done, you can execute a notebook with your newly created kernel by selecting it either from the launcher or from the kernel selector (top right drop down menu in an opened notebook). Our documentation provides you with the corresponding bash commands and walks you through these steps with examples.
Noto supports collaborative work through git. This means that while several people can edit the same notebook simultaneously, they will not see each others’ modifications until they are committed and pushed to the repository (including eventual conflict resolution). Contrary to Google Colab for instance, noto does not support real-time collaboration yet.
You can easily access your git repository from noto either through the command line in the Jupyter terminal or through the point-and-click interface of the git extension of JupyterLab, accessible from the Git menu at the top of the Jupyter window. Please see our documentation to set up SSH authentication to avoid having to repeatedly enter your login credentials. If you are new to git, we advise you to follow one of the many tutorials on the web to familiarize yourself with it beforehand. Then you can see this tutorial on how to use the point-and-click interface of the JupyterLab git extension.
Managing assignments generally involves 3 steps:
- providing students with the assignment, i.e. a description with instructions and sometimes also some source files,
- collecting students submissions and
- grading student work.
Steps 1) and 2) can be easily done via the EPFL moodle platform, which is connected to noto thanks to a dedicated plugin. As a result:
- You can provide students with notebooks from your noto workspace when creating assignments in moodle;
- Students can attach notebooks from their noto workspace when they submit their work to you;
- You can also easily execute students’ submitted notebooks directly in noto.
We have created a documentation for teachers and for students on how to use the Jupyter notebooks assignment plugin for moodle. If you would like to learn more about it, don’t hesitate to contact us.
Regarding step 3), entering grades and feedback for student work can also be done in the standard moodle assignment interface, either for each student individually or in batch. But with Jupyter notebooks, you also have the option to automatically grade some or all parts of a notebook-based assignment with automated graders such as nbgrader or otter-grader. Although not all functionalities of nbgrader are available because of its architecture, you can run its automated grader directly on noto if you wish. Discover how Pol del Aguila Pla used nbgrader and noto for their graded Image Processing Labs.
Currently, noto cannot offer GPU(s). Please note that asking entire classes to perform computationally-intensive tasks during TPs or projects can have a considerable impact on the environment, therefore we recommend only doing so in cases where it cannot be avoided, e.g. for very specific educational purposes. Otherwise, it is preferable to simplify the type of task you are asking students to perform (e.g. reduce the size of the dataset).
If you really need this type of hardware for your classes, here are some possibilities:
- Explore how other EPFL platforms for intensive computation, such as SCITAS or the IT of your faculty, could potentially support your course.
- Although this solution is not officially supported, and in limited cases, students may be allowed to use Google Colab with their EPFL account (having students use a personal Google account is not recommended for data protection reasons). You will need to request an admin of the GoogleColab group of EPFL to add the SCIPERS of the concerned students to the list of authorized access: [email protected]. A major drawback of this solution is that students also need to individually authorize API access to their Google Drive. Another drawback is that access to resources such as VRAM and GPU is unpredictable and access policies are not transparent.