Skip to content

Course outline ​

1. Introduction ​

2. Type system ​

  • user: tool for abstraction

  • compiler: tool for memory layout

3. Design patterns (mental setup) ​

  • Julia is a type-based language

  • multiple-dispatch generalizes OOP and FP

4. Packages ​

  • way how to organize code

  • code reuse (alternative to libraries)

  • experiment reproducibility

5. Benchmarking ​

  • how to measure code efficiency

6. Introspection ​

  • understand how the compiler process the data

7. Macros ​

  • automate writing of boring the boilerplate code

  • good macro create cleaner code

8. Automatic Differentiation ​

  • Theory: difference between the forward and backward mode

  • Implementation techniques

9. Intermediate representation ​

  • how to use internal the representation of the code

  • example in automatic differentiation

10. Parallel computing ​

  • threads, processes

11. Graphics card coding ​

  • types for GPU

  • specifics of architectures

12. Ordinary Differential Equations ​

  • simple solvers

  • error propagation

13. Data driven ODE ​

  • combine ODE with optimization

  • automatic differentiation (adjoints)