Tasks, or activities, or assignments, form the course content. Each INGInious task is composed of a problem set graded at the same time (run on a predefined environment) and possibly depending on each other. A task is linked to a course and is identified with a course id/task id pair.

Tasks are entirely editable from the micro-LMS (webapp). However, these parameters are stored in a task.yaml, in the task-associated folder.

#### Basic settings

Except the name and context information, the task basic settings are mainly used by the micro-LMS (webapp). These settings include:

• Submission mode : If you allow your students to work in group/team, you need to configure the submission mode accordingly.
• Submission storage : This option limits the size of the submission history.
• Submission limit : This option is used to restrict the number of submissions students can make per time period.
• Evaluation submission : This option provides download facility for the administrator by tagging a submission as the reference one. Note that submissions are tagged just after execution.
• Accessibility : Some tasks may be made accessible for a short amount of time only if some deadline is applicable.

#### Container setup

INGInious runs the test suite in a container, an operating system component allowing resources isolation in a faster way than with virtual machines.

This is further simplified by the usage of Docker, an open-source API for creating and defining containers, also providing disk image abstraction, making the definition of additional INGInious environments easy for the administrators.

Except the mcq environment used for multiple_choice questions, all the INGInious environments will start a container when launching the test suite. These containers can be preconfigured with the following parameters:

• (Hard) timeout : The timeout value is the maximum CPU (computation) time allowed for the task. Once this threshold is reached, the container is shut down and the student is returned a Time out feedback. The hard timeout is the maximum wall (human) time allowed for the task.
• Memory : This is the maximum amount of RAM the container can allocate. If this value is evaluated as too high by the INGInious agent, it will warn you at the container launch.
• Output limit : This is the maximum amount of data that can be output from the container. This parameter is useful if you need to print student generated data on feedback.
• Grading environment : The grading environment is defined by the provided software set.
• Internet connectivity : If, for some reason, you need to access the Internet during the tests, check this option is activated.

#### Subproblems

Different kinds of problems can be displayed on the INGInious task page:

• Code : This box displays an editable text area with syntax highlighting and automatic indentation.
• File upload : This box provides a file upload facility, if several files have to be submitted in a single archive for instance.
• Match : This box displays a small input field used for matching student and expected result.
• MCQ : This box displays a multiple choice question, with the ability to select multiple valid answers, and displaying feedback for each chosen option.

Match and MCQ questions can be automatically graded using the mcq environment that will use the feedback defined using the task editor. However, all problem inputs can be fetched from a container-based environment.

Task files are mainly used for launching the tests in container-based environments. Those tests will be started using the run file. This file must be placed at the task files root folder and be executable (either script or binary).

Two special subdirectories can be created in the task files folder:

• /public : This folder is publicly available from the frontends and can be used to share some initial documents, implementations, or skeletons with students. To give access to those file, place a link to taskid/filepath inside your task description.
• /student : This folder is used in combination with the run_student API to provide another level of isolation while running the tests. More information about this folder will be provided further in this tutorial.

### Description

Task and problems context descriptions can be formatted using reStructuredText syntax and $$\LaTeX$$ syntax for mathematical expressions. Please refer to both their documentation to find out the full set of features.

$$\LaTeX$$ expressions can be inserted via the following snippet:

This is a :math:\LaTeX expression !


Syntax-highlighted code blocks can be inserted via the following snippet and CodeMirror language identifiers:

Copy and paste the code below:

.. code-block:: python

print "Hello World!"


### Let's take a tour

Your course contains two tasks task1 and task2. You want them to weight respectively for 20% and 80% of the final student course score. How can you do that ?

The Container setup tab allows you to set some limitation parameters for code execution. Does it apply to the built-in mcq environment ?

##### Question 3: Task and problems contexts
<p style="text-align: center;">This is a new paragraph.</p>


Is this a correct context description ?

##### Question 5: The run file

Container-based grading environments require an executable run script at the root of your task files folder to initiate the tests. What is the particularity of that file ?

##### Question 6: Serving static files

You want to display the UML scheme of a class to be implemented by the student as an image on the task context. This image file has been specifically created for that assignment. How do you do that ?