Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The plot #3

Closed
BeastyBlacksmith opened this issue Jan 16, 2021 · 8 comments
Closed

The plot #3

BeastyBlacksmith opened this issue Jan 16, 2021 · 8 comments

Comments

@BeastyBlacksmith
Copy link
Collaborator

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
Copy link
Collaborator

kescobo commented Jan 17, 2021

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
Copy link

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
Copy link
Collaborator

giordano commented Feb 16, 2021

@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
Copy link
Collaborator

kescobo commented Feb 17, 2021

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
Copy link
Collaborator

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
Copy link

Jdbeck66 commented Feb 28, 2021 via email

@giordano
Copy link
Collaborator

@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
Copy link
Collaborator Author

I think the ship has sailed by now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants