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.
-
Basic Stuff:
- Why Julia
- Setting up a Julia environment (VSCode, Jupyter, REPL)
- Syntax (functions, loops, variables, types, structs, broadcasting functions, unicode characters, File I/O)
- Multiple dispatch
- Package manager intro
- Common numerical packages (LinearAlgebra, DataFrames, Unitful, Distributions)
- Plotting
- Benchmarking & Optimizing Code (BenchmarkTools.jl, array views, memory allocations, type stability)
-
Advanced Stuff:
- Basic parallelization (e.g. Threads)
- Basic GPU programming (high level interface)
- AutoDiff?? (I've only used FastDifferentiation.jl)
- Overview of what to expect on next workshop day? (e.g. Molly, DFTK...)
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.
Basic Stuff:
Advanced Stuff: