327 | | == Review == |
328 | | |
329 | | Optionally, one or more '''review''' attributes can be given. |
330 | | Each specifies a grade threshold X and a list of review units. |
331 | | If the student's grade on the exercise set is less than some Y, |
| 331 | == Exercise review and repeat == |
| 332 | |
| 333 | The "repeat" items in an exercise set determine the student's options |
| 334 | to review for and repeat the exercise set. |
| 335 | ( |
| 336 | Each repeat item is a function call of the form |
| 337 | {{{ |
| 338 | repeat(grade_threshold, review_unit, review_optional, repeat_optional); |
| 339 | }}} |
| 340 | The arguments are: |
| 341 | * grade_threshold: the highest grade to which this item applies |
| 342 | * review_unit: a unit that reviews the material assessed by for the exercise set. |
| 343 | * review_unit: whether the review is optional. |
| 344 | * repeat_optional: whether repeating the exercise set is optional |
| 345 | |
| 346 | A student's score on an exercise set is the average score of the selected exercises. |
| 347 | Call this Y; |
| 348 | the "selected repeat item" is the one with the greatest X such that Y < X. |
| 349 | |
| 350 | If there is no such repeat item, the student is not given an option |
| 351 | to repeat the exercise set; i.e., they see only a Next button. |
| 352 | |
| 353 | Otherwise let R be the selected repeat item. |
| 354 | If R.repeat_optional is true, the student sees |