DocDock theme

# Learning goals

# Week 2

- Priorities for Scientific Computing
- Exercise 1: Benchmarking
- Benchmark functions accurately
- Predict cost of an algorithm based on Big-O analysis
- Identify real world complications that affect scaling

- Exercise 2: Numerical Stability of N-body Integration
- Integrate differential equations
- Compare the accuracy and numerical stability of results as a function of time step, order and integration algorithm
- Appreciate importance of numerical stability

- Exercise 3: Assertions, Unit Tests & Continuous Integration Testing
- Write effective tests for floating point calculations
- Reduce bugs via
*assertions* - Identify bugs promptly via
*unit testing* - Identify bugs promptly via
*continuous integration testing* - End-to-end Testing to validate code

## Lessons along the way

- Just-in-Time (JIT) Compilation
- Types of languages
- Compiled vs Interpretted vs JIT
- Static/dynamic type-checking

- Plotting with Plots.jl
- Keyword/Named function arguements
- Integration Algorithms