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

cut the trebuchet stuff? and other feedback from 2022-12-14 #42

Open
snotskie opened this issue Dec 15, 2022 · 6 comments
Open

cut the trebuchet stuff? and other feedback from 2022-12-14 #42

snotskie opened this issue Dec 15, 2022 · 6 comments

Comments

@snotskie
Copy link
Contributor

Taught this yesterday, jotting down my feedback here:

  1. I moved the project management (ep 8) stuff more up front (right after ep 4), going with the strategy of teaching the things that Julia does differently than other languages first, and ending with the things that are similar to eg. Python, since my learners were all coming from a Python/R/etc. background. We might be able to combine ep 8 and ep 4 together.
  2. I think we need to spend more time on the type system, in particular how it relates to error messages. Julia has notoriously hard to understand / unhelpful error messages. Making sense of them requires a pretty good sense of Julia's type system, multiple dispatch, and the motivations the Julia community had behind those design decisions
  3. I think we need to spend more time talking about the relationship between Julia, Github, and the community-driven nature of Julia. A good place for that is when we talk about package management, generating projects, etc.
  4. I found the Trebuchet "project" distracting and hard to explain the motivations behind it. I found myself spending a lot of time trying to switch gears from language-level stuff to what the goals behind modeling the trebuchet were. I ended up cutting that mid-lesson and instead just quickly motivating each remaining piece (functions, flow control) separately
  5. I ran out of time to mention tests
  6. The learners really appreciated the REPL modes discussion, and they really appreciated the discussion about the unintuitive parts of Julia's type system for folks coming from other languages
  7. It seems really jarring to start the type system episode with structs. I think we should work up to that instead
  8. In the type system episode, we should mention syntax like "x::Number = 3" and spell out the non-intuitive parts of what that is doing
  9. Also in the type system episode, or in a new episode, we should mention vectors, multi-dimensional vectors, and the unexpected thing that Vector{Int64} is not a subtype of Vector{Number}. Similarly, we should mention dictionaries
  10. In the type system episode, my learners had a question about why the word Abstract shows up so much in the type tree. That's answered in the lesson, it was a good question, worth noting that it's something that stood out to them right away
  11. Is this aimed at folks new to programming, or coming to Julia from another language? Those feel like two different workshops to me, since what you talk about, in what order, and in what depth change a lot between those two cases
@giordano
Copy link
Collaborator

Thanks for your comments, very helpful! I haven't had the occasion for running the workshop yet, but I agree with you on point 4 that the trebuchet may not be the easiest example to bring as a motivation for this lesson, especially for a wide audience who may not understand the problem very well. Alas, I haven't thought much about alternatives, so I can't offer better suggestions.

@BeastyBlacksmith
Copy link
Collaborator

Indeed, much appreciated feedback, thanks!

Is this aimed at folks new to programming, or coming to Julia from another language?

As discussed in #12, it's more aimed at people coming from another language.

@snotskie
Copy link
Contributor Author

I haven't thought much about alternatives, so I can't offer better suggestions.

it's more aimed at people coming from another language.

Since they're coming with some prior understanding, I think a classic learning exercise might work fine, like an apple cart. You want to track the apples (some green, some red) you sell, etc. We can talk about variables, types, different data structures, control flows, functions, the Plots library, and the DataFrame library pretty easily with that I think, without much problem setup. There's toy datasets eg., https://www.kaggle.com/datasets/raykleptzo/classification-data-apples-oranges and https://www.kaggle.com/datasets/kapatsa/apple-prices-in-russian-regions

(Not suggesting apples specifically, just something silly and grokkable regardless of background. Trebuchet I felt out of my depth because my physics and calc are rusty)

@BeastyBlacksmith
Copy link
Collaborator

I can see the topic being overly specific and niche. But I think its the interesting part here to deal with an actual problem instead of a generic toy example.
I do think it would be beneficial to also have a more general lesson for julia than this one, but I also think that should live in a seperate lesson.
One option here would be to revive https://github.com/carpentries-incubator/julia-data-workflow.

@BeastyBlacksmith
Copy link
Collaborator

@all-contributors add @snotskie for ideas

Copy link
Contributor

@BeastyBlacksmith

I've put up a pull request to add @snotskie! 🎉

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

3 participants