Julia learning track, redux

There has been at least one previous attempt to add a syllabus to this language. To say that this was a triumphant success would not be strictly accurate (an understatement).

18 months on, is there any appetite for another attempt at this, or does the idea fill people with horror? I’m thinking about something fairly close to the Exercism mainstream, borrowing (stealing) ideas and content from other tracks with a successful syllabus. I’m not proud: the old adage that “plagiarism is the sincerest form of flattery” works for me in this context.

I’ve started thinking about concepts to include and how to sequence them, but it would be good to assess the general level of interest before I invest too much effort. There are related concept docs (including several unmerged drafts) for Python and R, so a Julia version would likely have similar style and overlapping content.

Concept exercises are in better shape, with lasagna already merged and several other WIP drafts in the repo.

2 Likes

It’s unclear to me what is being asked here for potential volunteers. Are you looking for assistance building the syllabus? Giving feedback on existing or potential concepts? Testing the syllabus once it’s drafted?

Would the new syllabus be built utilizing the existing concepts or is there a new effort potentially using the existing concepts as inspiration?

I guess I didn’t explain that well! My main question was: can anyone even stand to talk about this again?

I’m happy to write drafts of the concepts, but would certainly need reviewers.

The older draft concepts contain content that could be recycled. However, the introduction.md and about.md files probably need to be made less technical and more beginner-friendly. This is a common problem for Julia documentation more widely, tbh: Julia experts often have expertise in graduate-level math, and have high expectations of new learners.

There was a feeling previously that the syllabus needs a clearer flow, especially in its early concepts. See, for example, these comments from @ErikSchierboom. That was the point of my suggestion about learning from other tracks, instead of aiming to be innovative.

I hope I’m making more sense now!

3 Likes

I certainly have appetite. :smile: I keep intending to really learn Julia, and not *quite getting fully motivated. Perhaps reviewing and trying a learning syllabus would get me over that hump. :wink:

…I think that’s an excellent starting point: take the concepts and ideas that are closest to Julia, then iterate/adapt them to what makes Julia special.

I think you’d have several. :wink:

One thing you could try is to re-write or edit the introduction.md files to be less technical in tone, but then get more technical with the about.md files. You could also give more technical explanations in hints.md files and approaches.md files, to sort of provide a path for students to “ease into” the technicalness.

You could also be less technical at the beginning of the concept tree, and get more technical as the syllabus progresses.

Finally – something I’ve tried at certain points with Python (to greater or lesser effect) was to explain a concept in terms of what other “mainstream” languages do, and how Python is like or unlike them. An example is comparing Python dicts to hashmaps in Java, or lists to ArrayLists.

Another thought: You could also write up a “how to parse Julia documentation” or “how to read technical/mathematical documentation” as help files, to point students to places they could look up technical terms or parse certain phrases and instructions…

4 Likes

Fantastic! Though I’ll try to get the basics right before including topics on linear algebra and Bayesian statistics, specially for Bethany.

2 Likes

My eyes glazed over when you mentioned Bayesian statistics so I might be the perfect guinea pig for reviewing the syllabus. :slight_smile:

2 Likes

I am currently working my way through the python track. Many of the exercises that I have done so far, have a brief explanation of the concept
and a discussion of the related code syntax. Is this the kind of syllabus you are speaking of? If so, I find the idea a good. The Julia track could use more structure and explanation of the exercises.

Yes, that is the plan. I’m familiar with the Python syllabus, both as a student and by adding some concepts to it, so I expect the Julia version will be broadly similar.

For those who may not be aware, Exercism makes a strong distinction between Concept exercises and Practice exercises. Concept exercises are designed to be relatively simple and teach one thing. If you enable Learning Mode (which can be toggled on and off at any time, for tracks which have a syllabus), an extra tab called “Learn” appears and gives you the tree of concepts from basic at the top to advanced lower down. You have to work through these pretty much in a set order. That’s what I’d like to create for Julia.

Within Learning Mode, each concept will include an explanation of how it is used. Before solving the exercise, you see a short version. After a successful submission, it will (usually) show you a longer and more detailed version, with links to online resources such as manual pages.

Practice exercises are different, aiming to challenge programmers who already (to some extent) know the language. They can be solved in any way you choose and vary widely in difficulty: shown as easy/medium/hard on the website, though internally there is a 1 to 9 grading.

Another thing on my TODO list is to sort the Practice exercises by difficulty, with the easiest shown at the top. Unfortunately, that hits the problem that nobody ever agrees on difficulty, it is highly personal and subjective!

In case anyone is wondering why only a minority of tracks have Learning Mode: creating them takes months of effort, with no guarantee of eventual success. We only have a limited group of volunteers with the necessary skill, experience, and free time.

Gradually, we will try to improve…

I’ll be happy to help as well. I’m not completely familiar with learning mode, but I might have noticed some features like approaches or whatnot.

As an aside: please feel free to ping me about anything Julia track related.

2 Likes

Thanks. I’m trying to put together some more specific plans for the syllabus, hope to get something out early next week.

In terms of track maintenance, I have a lot of learning to do, and need all the help I can get!

2 Likes

I know how you feel! I’ll probably be most useful as a content creator (since my professional background is as an educator), but I make every effort to help in any technical areas I think I can manage to figure out (especially if it involves exploring something new in Julia).

In any event, I look forward to working with everyone!

2 Likes

Educator is good, on an educational website. My professional background was chemistry research. I’m doing this as a post-retirement hobby.

1 Like

The new Cairo track is also working on a syllabus at the moment so it’ll be exciting to be involved in both efforts. :)

I deeply believe in the value of syllabuses. But there are … challenges … in creating them. I’m currently going through the “Oh ****, what have it committed to?” stage, but it will pass.

1 Like

Yes it can be daunting. We have experienced people here that can help, and looking/borrowing from other tracks can be really beneficial too.

Status update. I just PR’d these concept/exercise pairs:

basics: PR #779
lasagna revision: PR #780

booleans: PR #781
annalyns-infiltration: PR #782

I still need to push another revision to lasagna, as it’s currently failing CI on v1.6 LTS (1.10 is fine - I used a function introduced in 1.7).

I won’t make a habit of dumping several at once (promise!), but for these early ones it might be useful to see them in context.

For better context, eventually, I started putting together a flowchart. It’s still mostly nonsense, so please give it a few days to start coming together.

Mainly for my own use, I do more detailed progress tracking at Julia Learning Track: Doodles - Google Sheets (most people will find it very boring). I think everyone with the link has read access, but let me know if there’s a problem.

In Julia programming, it quickly becomes automatic to use shortcuts to insert Unicode characters, for example \theta <tab> to get θ. This works in all Julia-aware editors (REPL, VS Code, etc).

Am I right in thinking this is impossible in the Exercism online editor? Which would make it inaccessible to the majority of students.


Incidentally, I haven’t given up on the learning syllabus. I just had an unproductive week because of virus problems (human, not computer).

Seems so at the moment. lang-julia - npm appears to be recently deprecated in favor of @plutojl/lang-julia - npm so we probably switch to that plugin for the editor. Both plugins have an optional keyword completion feature that would probably be nice to enable. It’s unclear whether that’ll allow \theta <tab> to work.

I know nothing about our online editor, but I use Pluto.jl a lot. It is very good at handling these shortcuts and displaying the resulting Unicode in a browser-based notebook.

In case anyone was wondering: these are a subset of \LaTeX that can be translated to a single Unicode character. Markdown-style \LaTeX within dollar signs is also possible (obviously - many engineers and scientists can’t operate without it), but entirely separate.

1 Like