JuliaMolSim / MolSSI_workshop

Content for intro to Julia lesson at MolSSI workshop on Julia for computational materials and molecular science!
1 stars 0 forks source link

Intro to Julia Outline #1

Open ejmeitz opened 1 week ago

ejmeitz commented 1 week ago

Just a high-level outline of what I think would be useful to cover based on Leticia's notebooks and how I use Julia. We definitely should get more specific with the layout and who teaches what, but for now lets pin down the topics we want to cover.

Leticia-maria commented 1 week ago

Should we set up the environment before introducing "Why Julia?"? I say that because I think about introducing "Why Julia?" with examples, and it would be better to set up the environment as the very first thing so they can follow the examples. What do you think? @rkurchin and @ejmeitz

cortner commented 1 week ago

I move long thought if ChainRules as a big selling point for Julia. But maybe this is getting too advanced. Still if there is any interest in discussing it we can integrate it at some point in the workshop.

Leticia-maria commented 1 week ago

I added subtopics and more detailed description:

  1. Introduction to Julia
  1. Julia Syntax Essentials
  1. Leveraging Julia’s Power
  1. Working with Numerical Data
  1. Benchmarking and Optimizing Code
  1. Advanced Topics
  1. Conclusion & Next Steps
rkurchin commented 1 week ago

This looks like an awesome overall outline to me! A few addenda:

  1. After the multiple dispatch section, I would add some content specifically talking about Julian interfaces, since that's quite important to understand things like AtomsBase, which will be focused on in the remainder of the workshop.
  2. Building on @cortner's suggestion, I do think it would be nice to talk about some of the more "workhorse" AD tools ("traditional" forward/reverse tools like ForwardDiff/Zygote and also slightly newer – but getting mature – tools like Enzyme) and also the power of Julian interfaces via things like ChainRules and AbstractDifferentiation in that context. Obviously the depth of this depends a bit on both time and how comfortable you guys are teaching this stuff, but (and this relates to the teaser thing) since a lot of the demos the next day are packages that make use of these tools, I think they're important to mention, ideally also including how they're distinct from other frameworks like JAX, Torch, etc.
  3. A bit of a look somewhere (probably either in the syntax section and/or in benchmarking) into some of the metaprogramming tools might be nice too – one of the neat benefits of Julia being "Julia all the way down" 😉

Pinging @jgreener64, @mfherbst, @tjjarvinen if there are any particular topics you'd want to be sure Julia newbies see!

Next steps (and we can talk about this in more detail when we meet today) as I see them would be:

  1. Starting to break out who will teach what
  2. Building up some rough time estimates for each section and starting to flesh out content accordingly
  3. (a bit further out obviously) finding friends/labmates(/advisors? I will attempt to voluntell Jerry) to be guinea pigs 😈
Leticia-maria commented 1 week ago
jgreener64 commented 1 week ago

Looks great! I wouldn't be too ambitious about the coverage of more advanced topics like AD or GPU though, given the time available. Maybe give a flavour and say that interested participants can chat to the Julia people around.