From c99f652ebf40879ddeec7e999c34c9443e74144e Mon Sep 17 00:00:00 2001 From: Martin Polanka Date: Mon, 16 Jan 2017 18:32:00 +0100 Subject: [PATCH] wip: assigning exercises --- Rewritten-docs.md | 95 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 5 deletions(-) diff --git a/Rewritten-docs.md b/Rewritten-docs.md index 3d162c6..ecbbfc3 100644 --- a/Rewritten-docs.md +++ b/Rewritten-docs.md @@ -2038,11 +2038,68 @@ to your group. ### Assigning exercises -@todo: Describe how to access the database of the exercises and what are -the possibilities of assignment setup – availability, deadlines, points, -score configuration, limits - -@todo: How can I assign some exercises only to some students of the group? Describe how to achieve this using subgroups +Before assigning exercise you obviously have to know what exercises are +available. List of all exercises in system can be found under "Exercises" link +in sidebar. This page contains table with exercises names, difficulties and +names of the authors of exercises. Further information about exercise is +available by clicking on its name. + +On the exercise details page can be found numerous information about it. There +is box with all possible localized descriptions and also box with some +additional information. Like when was exercise created by whom, what is +difficulty of it, what version is it. There is also description for supervisors +by exercise author under "Exercise overview" option, where some important +information can be found. And most notably there is information in what +programming languages can be exercises solved, this is available under +"Supported runtime environments" row. + +If you decide that exercise is suitable for some of your groups, please note +"Groups" box at the bottom of the page. There is list of all groups you +supervise with quick "Assign" button which will assign exercise to some +particular group. + +After clicking on "Assign" button you should be redirected to assignment +editation page. In there you can find two forms, one for editation of assignment +meta information and the second one for setting exercise time and memory limits. + +In meta information form you can fill these options: + +- name of the assignment which will be visible in group +- visibility, if assignment is under construction then you can mark it as not + visible and students will not see it +- subform for localized descriptions (new localization can be added by clicking + on "Add language variant" button, current one deleted with "Remove this + language" button) + - language of description from dropdown field (english, czech, german) + - description in selected language +- score configuration which will be used on students solution evaluation, + description of score configuration can be found further in "Writing score + configuration" chapter +- first submission deadline +- maximum gainable points before first deadline +- second submission deadline, after that students still can submit exercises but + no points for them +- maximum gainable points after first deadline and before second deadline +- submission count limit for students' solutions, after this amount students + cannot submit any other solutions +- visibility of memory and time ratios, if true then students can see for each + test percentage of used memory and time +- minimum percentage of points which submission have to gain otherwise it will + gain no points +- assignment is bonus one and points from it are not included in students + overall score + +Form has to be submitted with "Edit settings" button otherwise changes will not +be saved. + +The same form serves also for the purpose of assignment editation, not only +creation. That is why on the bottom of the page "Delete the assignment" box can +be found. Clearly the button "Delete" in there can be used to unassign exercise +from group. + +Let us take a look at time and memory limits form... + +@todo: limits ### Students' solutions management @@ -2151,6 +2208,34 @@ Roles description: application. +## Writing score configuration + +@todo: introduction to scoring, mention that there can be more implementation but for now only simple is available + +### Simple score calculation + +First implemented calculator is simple score calculator with test weights. This calculator just looks at the score of each test and put them together according to the test weights specified in assignment configuration. Resulting score is calculated as a sum of products of score and weight of each test divided by the sum of all weights. The algorithm in Python would look something like this: + +``` +sum = 0 +weightSum = 0 +for t in tests: + sum += t.score * t.weight + weightSum += t.weight +score = sum / weightSum +``` + +Sample score config in YAML format: + +```{.yml} +testWeights: + a: 300 # test with id 'a' has a weight of 300 + b: 200 + c: 100 + d: 100 +``` + + ## Writing job configuration To run and evaluate an exercise the backend needs to know the steps how to do