Exercism is a code practice and mentorship platform for everyone. We are getting close to a v3 launch of the website, and could use some help with the Elm Track!
Version 1 of Exercism contained a multitude of interesting problems to solve in around 50 languages. The idea was to solve an exercise, publish your solution, compare it to other solutions, and start conversations with others about the approach to solving the problem and the various trade offs involved. You could then modify your solution based on ideas from other solutions and conversations. This was a great idea and received good feedback (“Being able to solve a problem with a current knowledge set AND THEN see how other people have approached it is absolutely amazing”). However, not that many people did start conversations around the solutions, and so version 2 was born.
Version 2 used the same problems, but introduced Mentors. When anyone submitted a solution a volunteer mentor would look at it and leave some feedback. This meant that every solution had a conversation around it. This was a big step forward, and was greatly appreciated by students, as long as they received feedback reasonably quickly. Mentors also enjoyed analysing new solutions and giving feedback, although it got boring repeatedly giving the same feedback on the same solutions. Jeremy Walker, exercism co-founder, created a video about the problems with version 2, and so version 3 was born.
Version 3 aims to remove the need for boring repeated mentoring by identifying similar solutions to exercises and then automatically applying pre existing feedback. This will be instantaneous, so will also mean that students can progress at their own pace, without having to wait for a volunteer mentor to be available. Version 3 is also creating new Concept Exercises, which are a structured way of guiding a student through the concepts required to learn a new programming language.
The main changes in v3 are the following:
- There are now two main components on a track, concepts and exercises. Concepts are new micro lessons, each aiming to teach one key concept of a language. They are thus different on each language track but may be similar in languages based on the same paradigms. Concepts are organised on a tree of dependencies where validating one concept unlocks other concepts depending on it.
- Exercises are now split in two categories, concept exercises and practice exercises. Concept exercises are specifically tailored to support one concept, and completing such exercise will validate the associated concept and unlock the ones depending on it. Concept exercises should be designed such that there is one good way of solving it, using the associated concept.
- Practice exercises may depend on multiple concepts and can usually be solved in multiple ways. All previous existing exercises in v2 will become practice exercises in v3.
- Exercism will now be fully usable online, without needing to download exercise and upload solutions via a CLI (which is still available). This was made possible by integrating a code editor to the website, knowing which files need to be edited in every situation.
- There are now test runners embedded in the website. Meaning it’s possible to edit and test your solutions directly in the online editor.
- There are now representers embedded in the website, so that solutions that are semantically identical can usually be identified, and existing mentor feedback automatically applied.
- There are now analyzers embedded in the website, to automatically analyze solutions and provide feedback without the need of a human mentor.
We have less than a month before launch (estimation), roughly a week before public beta, and there are plenty of ways you can help us getting ready for the v3 launch.
- If you love teaching, you can help with the “curriculum” of concepts and concepts exercises for the Elm track. Some are already done, like the boolean concept and associated exercise. We have a step-by-step guide to help contributing concept exercise. Help building those would be awesome!
- If you love to learn stuff and are willing to tinker with things in a beta state, we’d love if you could try our track and other languages tracks to provide feedback on the good, the bad, and the ugly. This feedback will be super useful all along the coming weeks.
- If your thing is static analysis, helping us improve the Elm Representer could be useful. The Elm representer currently normalizes formatting, comments and identifier names, but doesn’t normalize order.
- If your thing is Rust, then there may be one or two tasks to do on the Elm Test Runner.
- And of course there are plenty of other little things to do, such as reviewing PRs, improving the tests runner, building analyzers (we haven’t talked about that yet) and unforseen future things to do.
We keep track of current priorities in that GitHub issue. Let us know if you’re interested in helping in the #exercism slack channel or directly on the relevant repositories and documents! We’d love to do a contributions kickoff conf-call with all people interested in helping.