> For the complete documentation index, see [llms.txt](https://mp-access.gitbook.io/access/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mp-access.gitbook.io/access/content/exercise-config.md).

# Exercise Configuration

How to configure an exercise

Inside the the Exercise, we expect a `config.json` file that provides important information about the exercise.

Here are the possible json values;

## Values

| Name                         | Type                                                               | Default | Required                                                 | Breaking | Description                                                                                           |
| ---------------------------- | ------------------------------------------------------------------ | ------- | -------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `title`                      | String                                                             |         | false                                                    | false    | The title of the exercise                                                                             |
| `longTitle`                  | String                                                             |         | false                                                    | false    | Will be displayed as the title on the exercise page                                                   |
| `type`                       | \[`code`, `codeSnippet`, `multipleChoice`, `singleChoice`, `text`] |         | true                                                     | true     | What type of exercise should this be                                                                  |
| `language`                   | String                                                             |         | only for type "code" & "codeSnippet"                     | true     | If type is "code" oder "codeSnippet", we need to cpecify what coding language it is                   |
| `isGraded`                   | Boolean                                                            | true    | false                                                    | false    | Should exercise get graded or is it a bonus exericise                                                 |
| `maxScore`                   | Double                                                             | 1       | false                                                    | false    | What are the maximum amount of points that can be get in this exercise                                |
| `maxSubmits`                 | Integer                                                            | 1       | false                                                    | false    | Maximum amount of submits possible                                                                    |
| `options`                    | String\[]                                                          |         | only for type "multipleChoice" & "singleChoice"          | true     | A list of options                                                                                     |
| `solutions`                  | String\[] / regex if 'text'                                        |         | only for type "multipleChoice" & "singleChoice" & "Text" | true     | A list of solutions                                                                                   |
| `hints`                      | String\[]                                                          |         | false                                                    | false    | A list of hints that will get displayd for if max score is not reached                                |
| `executionLimits.memory`     | Integer                                                            | 64      | false                                                    | true     | Max ram usage in MebiBytes                                                                            |
| `executionLimits.cpuCores`   | Integer                                                            | 1       | false                                                    | true     | Max core usage                                                                                        |
| `executionLimits.timeout`    | Integer                                                            | 3000    | false                                                    | true     | Max execution time in milliseconds                                                                    |
| `executionLimits.networking` | Boolean                                                            | false   | false                                                    | true     | Is networking enabled inside the container                                                            |
| `executionLimits.testing`    | Boolean                                                            | false   | false                                                    | true     | If testing is enabled, memory and cpu restrictions are lifted. Can be used for testing and debugging. |
| `rounding.strategy`          | \[`ROUND`, `CEILING`, `FLOOR`]                                     | `ROUND` | false                                                    | false    | How should the score be rounded                                                                       |
| `rounding.steps`             | Integer                                                            | 4       | false                                                    | false    | In how many pieces should a point be devided (4 => 0, 0.25, 0.5, 0.75, 1)                             |

## Example config for a Code Exercise

```
{
    "title": "UZH Airlines",
    "type":"code",
    "language":"python",
    "maxSubmits": 3,
    "maxScore": 10,
    "rounding": {
        "strategy": "FLOOR",
        "steps": "2"
    },
    "executionLimits": {
        "memory": "64",
        "cpuCores": "1",
        "timeout": "10000",
        "networking": true
    }
}
```
