Skip to content
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.

[Julia] Roadmap to Launch #25

Closed
SaschaMann opened this issue Jan 9, 2020 · 0 comments
Closed

[Julia] Roadmap to Launch #25

SaschaMann opened this issue Jan 9, 2020 · 0 comments
Labels
status/help-wanted Extra attention is needed track/julia type/discussion Discussion regarding v3

Comments

@SaschaMann
Copy link
Contributor

SaschaMann commented Jan 9, 2020

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:

  1. Find the concept the exercise is meant to teach/introduce
  2. 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.
  3. 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.

  1. 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!


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

@SaschaMann SaschaMann added this to the julia/core-concepts milestone Jan 9, 2020
@SaschaMann SaschaMann added the status/help-wanted Extra attention is needed label Jan 10, 2020
@SaschaMann SaschaMann removed this from the julia/core-concepts milestone Jan 24, 2020
@ErikSchierboom ErikSchierboom added type/discussion Discussion regarding v3 and removed discussion labels Apr 21, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status/help-wanted Extra attention is needed track/julia type/discussion Discussion regarding v3
Projects
None yet
Development

No branches or pull requests

2 participants