Learning Julia on exercism.io through practice problems and free mentorship

Hey everyone,

Exercism is a platform designed to help people improve their coding skills through practice and mentorship.

It relaunched a few months ago with a new mentoring feature. The Julia track has since grown significantly to nearly 600 students. I want to share it here, because it may be useful to people learning and teaching Julia. For disclosure: I currently maintain the Julia track.

How does it work? There are currently 36 Julia exercises, all including a test suite. 11 of those are so called core exercises. They are designed to teach a little bit more about the language features. A student uploads his solution to the exercise and receives feedback on it by a mentor and discusses it. Once the solution is approved, the student unlocks the next core, and a few side exercises. Usually this is done after a few rounds of refactoring. The side exercises provide practice problems to deepen the learned skills.

Who does it target? Exercism is mainly targetted at people who need practice problems while learning a new language. If you like to help beginners out, like to discuss solutions and want to learn more tricks yourself, you may enjoy becoming a mentor.

If youā€™re teaching a class, feel free to use the exercises, example solutions and test suites, theyā€™re all published under the MIT license: GitHub - exercism/julia: Exercism exercises in Julia.. Thereā€™s also a version for private teams: https://teams.exercism.io/


The track is growing, and while currently the mentors can mostly keep up with the demand, more mentors and contributors are always welcome!
If youā€™re interested, check it out and consider joining. It is completely up to you, how much time you want to spend on it, although ideally we want to have enough mentors so that on average ~1 hour a week per mentor is enough to handle all submissions. Even giving feedback on 1 submission a week is valuable to the learners!


Looking forward to your comments and hopefully seeing more mentors and students on the track! :slight_smile:

18 Likes

Very commendable that you do this! Iā€™ve recommended this to a new user!

1 Like

The breadth of languages on here is pretty stunning! Iā€™m really liking it so far.

Bump. We could use some more mentors :slight_smile:

I was thinking about it, but could not convince myself that it benefits learners (in general, not particular people using this site) more than simply answering question here.

Most questions in the First Steps category here get excellent answers within a few minutes. Whatā€™s the advantage (from a social perspective) of volunteering time on a closed platform?

4 Likes

How is it more closed than discourse?

In any case, it can be considered a supplement to, instead of a replacement for, First Steps. Iā€™ve learned a bunch from being a (Julia) mentor and a (Go) student. If youā€™re looking to get familiar w/ a new language, you might consider it.

I am under the impression that even just viewing material requires registration, but I may have missed something.

3 Likes

https://github.com/exercism/

1 Like

Just as a heads-up: The example solutions in that repo are used to test that the testsuite works correctly and that itā€™s possible to write a working solution, they arenā€™t necessarily the most idiomatic or best way to solve the exercise.

Students can choose to publish their submitted solution and it will show on the website Community solutions for Hello World in Julia on Exercism, too. The individual mentor comments are, afaik, the only non-publicly visible material right now.

2 Likes

As a user of the site for both the Lisp and Julia tracks, I find it to be more immediately responsive than asking here on discourse. Iā€™m guessing that mentors are more intimately familiar with the particular assignments and can provide answers with less ā€˜overheadā€™, i.e. less back and forth of discussing the fundamental reason for the problem existing and more discussion of the ways to tackle it in Julia.

Also, it feels more appropriate to me to ask fundamentals of a language or subject matter in a space specifically setup for just that task (thatā€™s just my personality though). Everyone on here has been open to answering my questions, but I really see Discourse as a place to tackle much more difficult or in-depth problems and discuss meta-Julia issues.

3 Likes

I am trying it out currently. I enjoy it. The possibility to see other peopleā€™s solutions is very helpful, I find. Also, the mentoring by @anon94023334 is exquisite!

There are also side exercises that you can solve in addition such as the spiral matrix for which there are sooo many interesting solutions. Itā€™s been a while for me to have to solve these kind of tasks, so I find itā€™s a nice mental exercise + I get feedback on code quality.

1 Like

I found about this a couple days ago and I did all the exercises for Julia. It was a neat experience. If I have time, I will try to mentor a bit.

2 Likes

The Julia track now has 845 students.

I started using exercism back in November. I soon switched to independent mode because of the long delays for any feedback from the mentors. The feedback I did receive was greatly appreciated.

Iā€™ll make it a goal to finish the remaining exercises (8 of 39 left).

The Python track has 116 exercises and I hope it wouldnā€™t be too much trouble to add more to the Julia track.

My exercism username is fooMeister.

It does actually take a fair amount of work to add an exercise. Iā€™ve started to work on semi-automatic generation of the testsuites but itā€™s still effort to implement them and ensure that theyā€™re ā€œJulianā€.

Recently my main focus has been on improving the order and the current exercises to make mentoring easier and create a more gradual progression for the students. If you want to help, feel free to submit a PR with a new exercise!

1 Like

Weā€™re currently working on a new version Exercism v3 and are looking for more people to help out as maintainers/contributors.

One of the most frustrating issues with the current version of Exercism are the long waiting times for Mentor responses. Meanwhile, the mentors themselves often have to mentor the same solution over and over again, which is unnecessarily time-consuming and can become quite boring. Exercism v3 is trying to address this and other problems with the current platform.

Some of the major changes:

  • Restructured tracks: We are restructuring tracks to build new pathways containing Concept Exercises. These exercises will teach the key concepts that someone needs to know when learning Julia. Completing a Concept Exercise will unlock other Concept and Practice Exercises. Concept Exercises will have automated feedback and approval, with no delays waiting for a mentor.
    In the end, we hope to have an exercise that teaches every concept one needs to know about to be fluent in Julia. You can think of it as an exercisified version of the Julia Manual.

  • Approaches: We will be automatically grouping similar solutions to Practice Exercises into Approaches. These will be supported with community-sourced articles expounding each approach, discussing its pros, cons, and potential usages.

  • In-browser coding: We will be adding the ability to solve exercises within the browser.

While itā€™s not a goal of Exercism as a platform, Iā€™m personally hoping that all of this development will also be useful to the Julia community outside of the platform, e.g. by having a large set of exercises that can be used in workshops/classes and tooling that makes grading/reviewing student solutions easier. The automated analysis code will be factored out into packages and published to be used independently of Exercism.

How can you help out?

This is quite a massive project, so weā€™re looking for more people to help out. The Call for Track Maintainers has info you need to get started. (However, it only lists tasks for maintainers. Not everyone who wants to contribute needs to have experience with Exercism. It still outlines the steps to get started, though) Here are some ways in which you can help:

  • Implementing/planning concept exercises: Weā€™ll probably need 30-50 concept exercises. This involves writing instructions, example solutions and test suites. You can also help by discussing the exercise proposals.

  • Representers: In order to achieve the automated feedback mentioned above, we need tooling that translates a solution to a normalised version to find ā€œidenticalā€ solutions.

  • Beta testing: Weā€™ll be needing beta testers for the concept exercises. Feedback from people new to Julia but not new to programming will be the most valuable and also the hardest to find. If you teach a class using Julia and want to give your students an additional way to practice, weā€™d be happy to give you and your students beta access before the launch (probably not before April/May, though).

If you want to jump right in, search for Julia issues in the v3 repo to get started (more issues will be coming over time).

If you have any questions, please let me know :slight_smile:


On an unrelated note: GCI students have been adding a lot of great exercises to the current version of Exercism and the track is now up to ~50 exercises :tada:. So far, nearly 1900 people have used Exercism to learn Julia or improve their Julia skills.

6 Likes