carpentries-incubator / julia-novice

A lesson exploring the Julia language
https://carpentries-incubator.github.io/julia-novice
Other
16 stars 23 forks source link

The plot #3

Closed BeastyBlacksmith closed 2 years ago

BeastyBlacksmith commented 3 years ago

Hey Collaborators,

I do think that the first thing, we should decide on ist the plot of the lesson. I proposed in #1 that we could use a simplified version of the Trebuchet example. We could introduce custom types and the basics of multiple dispatch by writing a basic ForwardDiff implementation and use ForwardDiff.jlafter we introduced the package manager later on for the optimizing the Trebuchet example.

What do you think about that? Do you have other stories in mind? Curious to read your ideas.

kescobo commented 3 years ago

Typically, when I'm designing a lesson, I want to start from learning objectives and work backwards from that, rather than starting from lesson content and then trying to bolt on learning objectives after the fact. I haven't had a chance to look through all of the SWC teacher docs - is there an agreed upon set of LOs for this kind of lesson?

I'm sure the trebuchet example will work fine for whatever, but the way we tell the story may depend on what skills we want students to come away with. For julia, a very pared down list might be something like:

  1. Using the REPL
  2. Variables, scope, assignment.
  3. Loops, conditionals, other control flow
  4. Writing functions
  5. Type system, multiple dispatch
  6. Modules
  7. Packages, Projects, and Manifests
Jdbeck66 commented 3 years ago

I’d be happy to help with this if it’s still of interest. I was starting to work out a plot before I saw this incubator and was thinking that mirroring the plot in software carpentry Programming in Python might be a good route. I think an explanation of multiple dispatch would make sense in a more advanced class.

giordano commented 3 years ago

@Jdbeck66

I’d be happy to help with this if it’s still of interest.

Absolutely!

I was starting to work out a plot before I saw this incubator and was thinking that mirroring the plot in software carpentry Programming in Python might be a good route. I think an explanation of multiple dispatch would make sense in a more advanced class.

I agree with you, but let me elaborate a bit. I'd like to give students transferable knowledge, that they can apply also in other contexts and, perhaps, with other languages. As much as I love multiple dispatch, I don't think this is fundamental for them to understand the basics of programming (I think classes and objected-oriented programming aren't part of the Python lesson?). Of the points suggested by Kevin, I agree with the first 4, not sure about type system. Talking about projects/environment with focus on reproducibility, however, can be really important, and certainly something that many students will find useful in other contexts and with other tools.

kescobo commented 3 years ago

Good points. My main motivation for including types/dispatch is that I remember the majority of errors I encountered early on were MethodErrors, and they were a bit inscrutable coming from python. That said, I definitely agree that it doesn't need to be lingered upon, and could in fact be taught as part of a general "how do I approach errors" episode or something

giordano commented 3 years ago

Showcasing and explaining MethodErrors is indeed a good point. Multiple dispatch can perhaps be included in the "defining functions" section, without going too much into details

Jdbeck66 commented 3 years ago

Hey all,

I’m committed to doing a Julia tutorial at the end of March and have been encouraged to follow the software carpentry corollary for Python, only using original genomics data that we have on hand at the University. I’d be happy to share that as a starting point if you’d like.

JB On Sun, Feb 28, 2021 at 8:51 AM Mosè Giordano notifications@github.com wrote:

Showcasing and explaining MethodErrors is indeed a good point. Multiple dispatch can perhaps be included in the "defining functions" section, without going too much into details

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/carpentries-incubator/julia-novice/issues/3#issuecomment-787473141, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACZNPS7BAV3QRKJL25PNMHLTBJQ63ANCNFSM4WFSASKQ .

-- Jim Beck Ph.D. Student - Computing, Computational Science and Engineering Boise State University

giordano commented 3 years ago

@Jdbeck66 sharing your work would be definitely great! Note that there is a tentative lesson already in #4, but we can try to find a synthesis between these two lessons in order to match the learning objectives we want to meet.

BeastyBlacksmith commented 2 years ago

I think the ship has sailed by now