Exercises are grouped in two types of exercise collections. The type can either be ExerciseGroup or Assignment. The normal exercises are meant to be non-mandatory training exercises, which means the users will be able to submit solutions at any time, and the best submission will determine the exercise status (solved, attempted or un-attempted). Assignment exercises are on the other hand meant to be handed in, see assignments for further details.
Exercise Groups / Assignments
An exercise group is a set of normal exercises. When creating/editing an exercise group the following properties can be set:
Name
The name shown in the list of exercise groups (like 'Week X' etc).
Type
ExerciseGroup or Assignment
VisibleFrom
The date and time from which the exercise group will be visible for the users.
Due *
The due date for the assignment.
Time *
The assignment can have a time limit, which will be the amount of time the users have to solve the exercises. The time starts when the user 'opens' the assignment, and only then will the exercises be available. After the time has passed the user will not be able to submit solutions anymore.
PostSubmissionsAllowed *
Selects whether or not the users can submit solutions after the due date (or time limit has passed). These submissions will not count as handed in, but can be used after feedback has been given to try and correct possible mistakes.
GroupsAllowed *
Selects whether or not group hand in is allowd. NOTE: groups are not supported for time limited assignments at the moment.
CommentsAllowed *
Selects whether or not the users can write a comment on the assignment, which can be seen with their hand-in.
VisibleToAuthors *
Selects whether or not the assignment is visible to course authors before the "Visible From" date.
Description *
A description of the overall assignment. Each exercise still has their own description.
* These fields are only relevant when Type is Assignment.
Exercises
An exercise has the following properties:
Name
The name shown in the list of exercises in the exercise group.
Description
A description of the exercise visible to the users. The description can be styled using markdown.
Languages
Select the programming languages which the exercise may be solved in. Selecting Default Languages will allow the default language(s) of the course, see settings.
SuggestedSolutionVisibility
Either Always, AfterSolved, or Never.
UseCustomSuggestedSolution
Normally the solution used to generate answer files will be used as suggested solution. Use this setting to override that behavior.
CustomSuggestedSolution
Markdown formatted custom solution.
Template
Name of template this exercise is based on.
Beside these properties, an exercise can have attachments. Files such as templates, header-files can be attached to an exercise, which then will be available to the users. (Make sure not to upload test data here.)
Solution
The solution to the exercise can be uploaded (optional) and can serve two purposes: The solution can be used to generate the output of the test data automatically (see expected output) and/or the solution can be used as a suggested solution shown to the users. For the solution the following properties are thus available:
Test Groups
Tests are organized in one or more test groups per exercise. A test group shares the same configuration (see configuration).
Test groups are graded in the order. For each test group the following properties can be set:
Name
The name of the test group, visible to the user (e.g. Tests, Sample tests, etc).
Feedback
Select what should be visible to the users after submitting a solution:
Full - All test data and judge output will be visible.
ResultAndJudgeOutput - Only the result and judge output will be visible.
OnlyResult - Only the result (Succeeded, Wrong Answer, etc.) of each test is visible.
Hidden - The entire test group will not be visible for regular users.
OnTestGroupFailure
Select what should happen if a test groups fails (ie. one or more tests fail):
Break - Do not execute the following test groups.
Continue - Execute the following test groups.
Goto - Jump to the test group specified in OnTestGroupFailureGoto. Index must be larger than current test group.
OnTestGroupFailureGoto
The index of the test group to go to (1-indexed).
RunManually
If this is set, this (and following) test groups will not be graded automatically.
Besides these properties, a test group can have all the advanced configurations. See configuration for more details.
For training exercises we suggest having only one test group with full feedback (Feedback set to Full), and OnTestFailure set to Break (see configuration). With these settings the users can focus on correcting one test at a time. We also encourage you to upload a suggested solution and let it be visible after the exercise is solved, because we believe that the best way to learn is by trying yourself first, and then afterwards see the correct solution for comparison.