Rachel's notes and feedback on "Intro to Julia" dry run
General Notes/Feedback/Todos
Overall:
make sure to pause periodically for questions!
[ ] also add pauses for people to try things out along with suggestions for what to try, especially in the early-on content e.g. syntax so they can try defining a function, etc.
[x] let's add number prefixes to notebook filenames
[ ] make sure README has everything up to date and in correct order
[x] add some more links to relevant docs pages, etc. for people to refer to
[ ] look over each other's stuff and make sure we're not being redundant
[ ] think about ways to emphasize the things that are really important concepts vs. just demonstrations of syntax (maybe some emoji code?)
Leticia's intro stuff
[x] we need to write some clear "pre-requisite" instructions for what to install before we start and how to clone repo and put it on a slide so people can get set up beforehand, including activating environment etc.
[ ] make sure you know where startup.jl is on Windows machines if you're going to talk about that level of customization
[x] make sure to write up a list of what exactly you're going to say/do so that Ethan knows and maybe just put it in a markdown file in here
[x] related to above: reminder togo over REPL and REPL modes
Ethan: syntax
[x] let's make sure we know how to get set up in the notebook...probably just the Pkg.activate(); Pkg.instantiate() cell will do it? Make sure to try this out
[x] could add discussion of methods function to see different dispatches
[x] add example of arrow syntax for functions, e.g. f = a -> 2a; f(3) or something since that will come up in DataFrames later
[x] with discussion of inplace modification, can call ahead to tabular data stuff because this trips people up with DataFrames specifically
wrt defining structs: "objects don't have methods, functions have methods"
NOTE FOR DISCUSSION: defining "member" functions (I'm still not totally sure what this means)
[x] FIX: @. cell doesn't run in notebook in VS Code
[ ] another useful macro to demo might be @which as that can be helpful in debugging usage of code that's part of a larger package...will have to think about what an easy example is, presumably something from one of the packages we're already importing
[x] maybe add variable interpolation into strings with $ because then you can call back to it when you do interpolation in optimization
[x] add mention of array indexing/slicing because it's different from Python and MATLAB and because you look back at it in optimization also
Leticia: Why Julia?
[x] make sure to commit latest version with your new changes
can note that Ethan will talk about compilation time etc. in optimization section
[ ] if you want to demo against e.g. Python, just include a screenshot and if you want to do something live, run it locally
I added a cell to demonstrate a cool corollary of your area(::Shape) example by combining broadcast with dispatch: area.([Circle(5), Square(3)])...related, we could maybe expand this a little bit to draw parallels to e.g. writing a class in Python, can discuss this next week
[x] probably we should move Pkg stuff to the intro section and demonstrate it in the REPL
[x] maybe show some introspective stuff of the type hierarchy e.g. supertype and subtypes
Leticia: Numerical Data
[ ] add some more plot examples beyond just histograms, maybe talk about plot recipes if we have time (not crucial, can just add a link)
[ ] probably get rid of detailed exploration of distributions and instead just show different dispatches of the rand function with one of the distributions as an example along with some other things, that's likely more broadly useful
Ethan: optimization
[x] maybe mention column-major-ness and include an example?
[x] do slower thing first in every case
Ethan: advanced
[ ] set environment variable for threads
Timing
3:15 Leticia starts intro
3:25 Ethan starts syntax
4:00 Leticia starts Why Julia (paused 4:05 for phone call, started up 4:10)
4:35ish? break
5:00 Leticia starts numerical data section
5:30 Ethan
6:00 finish
Rachel's notes and feedback on "Intro to Julia" dry run
General Notes/Feedback/Todos
Overall:
Leticia's intro stuff
startup.jl
is on Windows machines if you're going to talk about that level of customizationEthan: syntax
Pkg.activate(); Pkg.instantiate()
cell will do it? Make sure to try this outmethods
function to see different dispatchesf = a -> 2a; f(3)
or something since that will come up in DataFrames later@.
cell doesn't run in notebook in VS Code@which
as that can be helpful in debugging usage of code that's part of a larger package...will have to think about what an easy example is, presumably something from one of the packages we're already importing$
because then you can call back to it when you do interpolation in optimizationLeticia: Why Julia?
area(::Shape)
example by combining broadcast with dispatch:area.([Circle(5), Square(3)])
...related, we could maybe expand this a little bit to draw parallels to e.g. writing a class in Python, can discuss this next weeksupertype
andsubtypes
Leticia: Numerical Data
rand
function with one of the distributions as an example along with some other things, that's likely more broadly usefulEthan: optimization
Ethan: advanced
Timing
3:15 Leticia starts intro 3:25 Ethan starts syntax 4:00 Leticia starts Why Julia (paused 4:05 for phone call, started up 4:10) 4:35ish? break 5:00 Leticia starts numerical data section 5:30 Ethan 6:00 finish