Skip to content

Exercise difficulty distribution #527

Closed
@coriolinus

Description

@coriolinus
$ jq '.exercises[] | if (.deprecated | not) then .difficulty else empty end' config.json | sort -n | uniq -c
     18 1
     47 4
      6 7
      8 10

The problem is that, in my subjective opinion, we overload students with easy and/or trivial exercises before allowing them to proceed into more interesting problems. The currently linear nature of exercism doesn't help with that. I'm aware that future versions are intended to help solve this problem, but I am not aware of any planned date on which those versions are intended to be released, so I am disinclined to simply wait.

Question 0: Is this an actual problem?

I believe it to be one, but it's well worth getting other input on this. If people find that the exercise difficulty scales well with their increasing mastery of the language, then no further action is required for this issue.

All further questions assume that this is answered in the affirmative.

Question 1: Should we cull some difficulty 1 and/or some difficulty 4 exercises?

This is the simplest way to improve the difficulty balance: we identify some subset of difficulty 1 and 4 exercises which are most pedagogically useful and most interesting, and drop the rest. We don't have to delete any code; simply adding a deprecated tag in config.json should be sufficient to exclude it from the track, so we can easily reintegrate it as an optional exercise once that's a thing.

If we answer this question in the affirmative, there are a few sub-questions which should be talked over:

  • Question 1.1: How many level 1 exercises are desired?
  • Question 1.2: How precisely should we rank the level 1 exercises?
  • Question 1.3: How many level 4 exercises are desired?
  • Question 1.4: Do we desire a separate ranking scheme for level 4 exercises? If yes, what should it be?

Question 2: Should we impose barriers to adding new difficulty 1 or difficulty 4 exercises?

This could be a flat ban on future easy exercises, or a requirement that each proposed addition include the removal of another of the same difficulty, or something else.

This addresses the problem at its source: students get excited about Rust, enjoy exercism, and want to contribute an exercise. They pick something easy, because they are not confident in their own ability to contribute a more difficult exercise.

This is potentially a bad idea for the same reason: if students are discouraged from submitting easy exercises, are we sure they'd come back later to submit difficult ones?

If they don't, is that even an issue? Rust currently has 79 active exercises; there are 120 in the problem specifications repo. Within problem specifications, there's no difficulty data, so it's hard to estimate what the difficulty distribution for the unimplemented exercises is. If the current Rust track comprises a fair sample of the problems specified, then its difficulty distribution should be pretty close to ours. In that case, it's skewed in favor of easier problems.

Question 3: Should we offer incentives to add new difficulty 7 or difficulty 10 exercises?

If we do, what exactly could we offer more than a note in the README stating that we are particularly seeking those exercises?

Metadata

Metadata

Assignees

No one assigned

    Labels

    track metaIssues about the track as opposed to about exercises

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions