-
Notifications
You must be signed in to change notification settings - Fork 66
Feature request: multi-part exercises #331
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Dear @adhameer, @hannelita, @yurug, and all people interested in this feature, FYI this use case (multi-part exercises) appears to be quite close to the use case #395 (dual-grader exercise), so @YoanwM and I are considering to devise an implementation that addresses both use cases:
So we may post in this issue (or in #395) more details in the upcoming weeks, but the overall idea is as follows:
|
(As an aside, the runnning example ( |
Hi @yurug @YoanwM, following our last video meeting and for the record, here is the recap of the format we finally proposed for Grammar of
|
It would be extremely useful to be able to organize an exercise into sub-parts, perhaps similarly in layout to the tutorials where you can navigate through the sections using left and right arrows at the top of the screen.
Each sub-part would have its own prelude, prepare, template/editor, description, and solution. They could all share a toplevel (though there might be some issues to work out here wrt prelude/prepare definitions).
This would be very helpful because often later parts of an exercise will rely on successfully implementing the earlier functions. For example, part a) of an exercise will require the student to implement a function
f
, and then parts b) and c) involve making use off
. If a student is unable to implementf
, they will be harshly penalized by the autograder on parts b) and c) of the exercise as well. In contrast, when manually grading an assignment we could still grade the student on parts b) and c) independently, if they are still able to usef
properly assuming a correct implementation.This is especially a problem with exercises involving modules. In a recent exercise, we wanted students to implement a module
M
with an abstract typet
, and later wanted them to implement a functorF (M): S with type t = M.t
(whereS
was some signature) and apply it toM
resulting in a moduleM2
. We were unable to test the moduleM2
since its type involved some types defined by the student in their solution, so we were not able to provide this type in our grader code.Splitting the assignment up into several exercises, each with the previous questions implemented in the prepare.ml file, would have been a way to get around this, but we felt that doing this was a bit clunky and confusing. Being able to split up an exercise into sub-exercises which can be navigated between on a single page seems like a good solution to this.
The text was updated successfully, but these errors were encountered: