You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.
This issue is to track the Julia v3 roadmap. If you intend to help with this track, please read this entire document, and find the section about "How can you help".
I have been working on the Julia v3 track by compiling a list of Julia specific concepts, transition documents from various languages and starting writing exercises. The concepts can be found here.
The track README contains a summary of relevant results from the Julia User & Developer Survey June 2019. The learnings from the survey and the "What was it like to learn Julia?" issue can be helpful to find out what people struggle with, what concepts are important to most people, and therefore the track and exercise design.
It is important to understand we never explain a specific type or syntax as a concept, but teach the more "abstract" concept around it, using the type(s) or syntax(is).
Some listed concepts, like performance or type piracy, aren't typical language features, but rather they are concepts that people commonly struggle with when they are new to Julia, or features that are the reason why they use Julia. While these might be closer to "proficiency" rather than "fluency", they should be considered in order to teach good habits to write generic and performant code early on.
I personally found it easier to start by writing an exercise for one concept (in my case multiple dispatch) , and then working out which concepts are a prerequisite to solve it and which concepts can be introduced with that knowledge, than writing a long list of concepts first.
⚠ Note ⚠: The idea here is to use a concept name for the folder, but perhaps use some sort of "progression", so they will naturally become a sort of path to traverse. A WIP document with the progression path can be found here.
It's only important that it's reasonably easy to find the exercise. It's okay if the name isn't perfect. We will iterate on this.
How can you help?
This track
Writing concept exercises
Either take a concept from the readme or from the WIP progression document and implement or write it. You can also add rough outlines of exercises to the document if you have a vague idea of an exercise but are unsure about the details.
I don't know what the best way of writing new exercises is, but here's how I created the multiple dispatch exercise:
Find the concept the exercise is meant to teach/introduce
Make yourself clear what the student is meant to know after solving the exercise. I do this by coming up with short questions that the student should be able to answer afterwards.
Find an existing v2 exercise that can be adapted to teach this concept, check the concept document in this repo for exercises in other languages that could be adapted, find examples for this concept in talks, the Julia manual or other resources, or create something completely from scratch. In the case of multiple dispatch, I took an example from Stefan Karpinski's Juliacon talk about the concept.
Once I knew what the exercise is about, what the "story" is, and what a solution could look like, I implemented the example solution and narrowed it down as much as possible, similarly to creating an MWE when asking a question. I'm not going to list the steps of actually writing the exercise, because their order is quite variable depending on the exercise and concept. For example, it's also possible to start by writing a test suite or the instructions.
Think about how it fits into the progression. What are the prerequisite concepts? What concepts can be "unlocked" through implementing this exercise? This can also be done as the first step, but I found that it only became clear once I actually created the exercise. See also: progression.md
Writing concept documents
Many of the concept links don't lead anywhere. You can help out by writing short descriptions of what the concept is, both specifically to Julia and across languages.
Globally
There are concepts missing.
Exercises
We need two types of exercises. The concept ones, as explained above -- you can chose to pick one from the list above or suggest, in this issue, one that's not listed. The other ones are the practice ones, which are like the v2 exercises.
Analyzers
TBD
Priorities
Any help is appreciated! However, if you have to choose between different ways to contribute, I think the most useful right now is implementing a new concept exercise. Once we have a few of them, it will be much easier to iterate on the progression, think about missing concepts, and so on.
It's important to note that we're all new to this and there will be a lot of trial and error. Most new exercises or concept documents won't be perfect in their first version, so don't hesitate to contribute even if you feel unsure about whether or not something works or doesn't!
This issue is to track the Julia v3 roadmap. If you intend to help with this track, please read this entire document, and find the section about "How can you help".
I have been working on the Julia v3 track by compiling a list of Julia specific concepts, transition documents from various languages and starting writing exercises. The concepts can be found here.
The track README contains a summary of relevant results from the Julia User & Developer Survey June 2019. The learnings from the survey and the "What was it like to learn Julia?" issue can be helpful to find out what people struggle with, what concepts are important to most people, and therefore the track and exercise design.
Folder structure
Concept exercises
The concept exercises in the Julia track are a work-in-progress and can be found in
/concept-exercises
. Important types of concepts to target are things that only exist in Julia or are different to languages many people use before/instead of Julia.It is important to understand we never explain a specific type or syntax as a concept, but teach the more "abstract" concept around it, using the type(s) or syntax(is).
Some listed concepts, like performance or type piracy, aren't typical language features, but rather they are concepts that people commonly struggle with when they are new to Julia, or features that are the reason why they use Julia. While these might be closer to "proficiency" rather than "fluency", they should be considered in order to teach good habits to write generic and performant code early on.
I personally found it easier to start by writing an exercise for one concept (in my case multiple dispatch) , and then working out which concepts are a prerequisite to solve it and which concepts can be introduced with that knowledge, than writing a long list of concepts first.
⚠ Note ⚠: The idea here is to use a
concept
name for the folder, but perhaps use some sort of "progression", so they will naturally become a sort of path to traverse. A WIP document with the progression path can be found here.It's only important that it's reasonably easy to find the exercise. It's okay if the name isn't perfect. We will iterate on this.
How can you help?
This track
Writing concept exercises
Either take a concept from the readme or from the WIP progression document and implement or write it. You can also add rough outlines of exercises to the document if you have a vague idea of an exercise but are unsure about the details.
I don't know what the best way of writing new exercises is, but here's how I created the multiple dispatch exercise:
Once I knew what the exercise is about, what the "story" is, and what a solution could look like, I implemented the example solution and narrowed it down as much as possible, similarly to creating an MWE when asking a question. I'm not going to list the steps of actually writing the exercise, because their order is quite variable depending on the exercise and concept. For example, it's also possible to start by writing a test suite or the instructions.
Writing concept documents
Many of the concept links don't lead anywhere. You can help out by writing short descriptions of what the concept is, both specifically to Julia and across languages.
Globally
There are concepts missing.
Exercises
We need two types of exercises. The concept ones, as explained above -- you can chose to pick one from the list above or suggest, in this issue, one that's not listed. The other ones are the practice ones, which are like the v2 exercises.
Analyzers
TBD
Priorities
Any help is appreciated! However, if you have to choose between different ways to contribute, I think the most useful right now is implementing a new concept exercise. Once we have a few of them, it will be much easier to iterate on the progression, think about missing concepts, and so on.
It's important to note that we're all new to this and there will be a lot of trial and error. Most new exercises or concept documents won't be perfect in their first version, so don't hesitate to contribute even if you feel unsure about whether or not something works or doesn't!
An easier view to keep track of all issues can be found in the Projects section of the repo: Concept Exercise Board, Concept Extraction Board
The text was updated successfully, but these errors were encountered: