JuliaTutor.jl
JuliaTutor.jl copied to clipboard
My JuliaTutor Feature Wishlist
Hey @caseykneale ,
Having messed around with JuliaTutor
and having thought a lot about it, I have some ideas for where it could go. Here are some features which I think would be great for pedagogy and inspiring young Julians:
- Dedicated basic learning modules
- Hello World!
- Strings (parsing, substrings, replacements, searching, concatenation, interpolation)
- Control flows (if/else, do's, for, while, ternary statements, clamps)
- Functions (function definitions, args, kwargs)
- Types (performance improvements, explanations)
- Julia Paradigm modules
- Multiple dispatch
- Strong equalities
- Macros
- OOP
- "Your First PR" guide for contributing to Julia and beyond
- Guide them to make their first PR
- At end of core learning modules
- PR to JuliaTutor to join Hall of Fame
- Learn how to contribute
- Guided programming exercises
- Fill in the blank
- Create function and see if you can get correct result
- Spot the error
- Mentee becomes mentor
- Anyone who finishes JuliaTutor is then eligible to help others in JuliaTutor
Some packages that I think could help with this:
This issue is meant to hopefully spring board development. Feel free to comment with more ideas/wishes.
This sounds mostly good to me.
I personally would drop the My First PR portion. I think it's a great idea but I don't know how realistic it is to emulate that sort of experience from a Julia REPL. Not saying it can't be done, but I don't know of a clean way for it to be done. That said - if anyone does know of a good way to do that - by all means.
One thing that I think could be important is... Somehow hooking it up with other packages. So you could get tutorials on other packages (ideally > 1.0.0) without needing to PR directly to JuliaTutor itself. Such as: DataFrames.jl. Maybe in the beginning it would be best to bake those in and figure out a system for that later?
Good stuff though
Adding on to the ideas proposed above, I feel it might be very helpful to have some content on effectively debugging Julia code - methods other than just having println
statements littered all over the place.
For this, a few quick examples showing how tools like Debugger.jl
(or even gdb
) could be used for debugging would be great, imo.
I'd want to add
- Making a package and learning some of the basic Pkg commands
- Testing practices
A guided tour of Pkg basics could be done relatively easily.
Testing might be harder to do in a REPL. Hmm...
We found the repo of "The Little Book of Julia algorithms" and forked it into HoJ org here: https://github.com/Humans-of-Julia/littlebookofalgorithms.jl/tree/master/src
It holds a collection of open source challenges that we can include as an initial lesson package.
So currently on Master is a version of JuliaTutor
that works how I envisioned it should. At this point users can definitely contribute lessons, and bug hunt. Once we get some decent lessons I think it should be registered,
If you all want to spoof Pkg, or Git by all means - but I won't be doing that. If/when you read the code you'll find out why I think those could be separate packages.
Similarly, if there is a mentor/mentee thing, I don't understand how that could work from the REPL. Mark S, and others are looking into doing that via Discord. I think there's a lot of power in not involving humans when learning a PL via experiential learning, but it could be cool to have a chatroom where people go through lessons and if they get stuck they can ask for help. For now - users can ask for hints, and if hints are not available it directs them to Discord.
I will be taking something like a "sabbatical" soon to focus energy on other areas. I can help make doc strings, write some unit tests (in this case some unit tests are impossible to write given the nature of the package), and clean up. But I won't be able to full time dedicate myself to maintaining or extending this project.
Thank you @caseykneale! We'll fill it with lessons and maybe for startup, we could just open a HoJ School channel to approach the lessons and help solving maybe, until we figure out if it's possible to run the lessons within Discord itself.
https://syl1.gitbook.io/julia-language-a-concise-tutorial/ https://techytok.com/from-zero-to-julia/ Some more sources for inspiration maybe.