JuliaTutor.jl icon indicating copy to clipboard operation
JuliaTutor.jl copied to clipboard

My JuliaTutor Feature Wishlist

Open TheCedarPrince opened this issue 3 years ago • 8 comments

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:

  1. 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)
  2. Julia Paradigm modules
    • Multiple dispatch
    • Strong equalities
    • Macros
    • OOP
  3. "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
  4. Guided programming exercises
    • Fill in the blank
    • Create function and see if you can get correct result
    • Spot the error
  5. Mentee becomes mentor
    • Anyone who finishes JuliaTutor is then eligible to help others in JuliaTutor

Some packages that I think could help with this:

  1. InteractiveErrors.jl
  2. TerminalPager
  3. REPLMaker.jl
  4. Jet.jl
  5. FZF.jl
  6. Git.jl

This issue is meant to hopefully spring board development. Feel free to comment with more ideas/wishes.

TheCedarPrince avatar May 03 '21 22:05 TheCedarPrince

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

caseykneale avatar May 04 '21 11:05 caseykneale

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.

thazhemadam avatar May 06 '21 23:05 thazhemadam

I'd want to add

  1. Making a package and learning some of the basic Pkg commands
  2. Testing practices

miguelraz avatar May 13 '21 23:05 miguelraz

A guided tour of Pkg basics could be done relatively easily.

Testing might be harder to do in a REPL. Hmm...

caseykneale avatar May 13 '21 23:05 caseykneale

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.

mkschulze avatar May 14 '21 13:05 mkschulze

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.

caseykneale avatar May 15 '21 12:05 caseykneale

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.

mkschulze avatar May 15 '21 12:05 mkschulze

https://syl1.gitbook.io/julia-language-a-concise-tutorial/ https://techytok.com/from-zero-to-julia/ Some more sources for inspiration maybe.

mkschulze avatar May 15 '21 18:05 mkschulze