-
-
Notifications
You must be signed in to change notification settings - Fork 195
Update config.json to match new specification #274
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
I'll keep this PR open until we finish at least the first two - maybe all - of the three proposed stages:
Now that we finished stage 1 of the migration, it is time to give approximate difficulties to all the exercises (stage 2). 😄 |
I'll just paste here an unfinished exercise's classification, so that in the future I, or someone else, can continue from where I stopped.
|
I found an old list I made at #193 (comment) , I might take a look at it sometime and see whether that has any useful information thta can go here. |
This list of topics I made was initially based on you previous classification. Forgot to give the credits, sorry! 😄 |
Sometimes I feel like just taking the #274 (comment) list and adding it to the config.json, unmodified, just so that we can say this got done. But other than the satisfaction of being able to close the issue, there is too little incentive to get this task done. The topics don't show on the site, so the only possible benefit is maybe we can reorder the exercises based on what we observe from the topics. But we already reordered the exercises on difficulty, so we may not gain much from that. Being able to reorder the exercises in a reasonable way was what gave the incentive to add the difficulty ratings, of course. |
@petertseng Let's do this without the difficulty rating. We aren't using it for anything yet, and when we do we'll be way more motivated to actually add them. |
Sometimes I would like to know - all the exercises in this track that use Or you know a crazy dream of mine? That at least these elements of the topics section can be automated. |
By the way, I hope I don't sound too harsh or critical. I say that because a very pessimistic reading of my comment is that I am complaining that higher powers have handed down a task of no benefit and that I am in active rebellion against the task. Now, I don't think that anyone is going to read it that pessimistically, but I could believe that someone will read it slightly pessimistically. What I see here is:
At this time, I decided to add a few topics that I feel the track will derive benefit from. Then I propose we can consider this issue complete. |
It didn't sound pessimistic to me. I think it was opportunistic to consider adding the difficulty ratings, but more practical to not do so right now. I'd like to be able to intelligently order exercises better, and I suspect that we might do so eventually (and maybe not with the difficulty rating). |
While evaluating that a proposed hello-world exercise in #475 would introduce Maybe into the track at the first exercise, I found myself wondering what other exercises introduce Maybe. I decided to put this, and select other topics, into the config.json file. The topics selected are, largely, those that might affect a problem ordering decision. They are topics that either require some effort to grasp (so we should not put them too early) and/or are repetitive (so we should not place them too close together). * Maybe * Either * Lazy evaluation * Define a data type * Library reimplementation * Refactoring * Accumulator-strictness * instance TC (where TC is any typeclass other than Eq or Show) * IO Monad * Random * Mutable state Closes #274.
It is a little unfortunate to leave the work in #274 (comment) hanging, but I felt that trying to maintain all that information would require a lot of mental effort and not enough benefit. But my hope is that if the time comes to flesh out the topics, we can revisit that work, since I imagine things will not have changed too much with the exercises. We can also add more topics as time goes by, if we see that they are relevant to making ordering decisions. An implicit consequence of the way this was done: The current topics in config.json would be of use for students if suddenly they were appear on the website today, but the primary use is for track maintainers so that we can understand our problem ordering. |
For the past three years, the ordering of exercises has been done based on gut feelings and wild guesses. As a result, the progression of the exercises has been somewhat haphazard.
In the past few months maintainers of several tracks have invested a great deal of time in analyzing what concepts various exercises require, and then reordering the tracks as a result of that analysis.
It would be useful to bake this data into the track configuration so that we can adjust it over time as we learn more about each exercise.
To this end, we've decided to add a new key exercises in the config.json file, and deprecate the
problems
key.See exercism/discussions#60 for details about this decision.
Note that we will not be removing the
problems
key at this time, as this would break the website and a number of tools.The process for deprecating the old
problems
array will be:In the new format, each exercise is a JSON object with three properties:
a list of common topics at https://github.com/exercism/x-common/blob/master/TOPICS.txt. Do not feel like you need to restrict yourself to this list;
it's only there so that we don't end up with 20 variations on the same topic. Each
language is different, and there will likely be topics specific to each language that will
not make it onto the list.
The difficulty rating can be a very rough estimate.
The topics array can be empty if this analysis has not yet been done.
Example:
It may be worth making the change in several passes:
The text was updated successfully, but these errors were encountered: