Students are assumed to know how to program in a language of their choice. Examples in the class will be provided in python.

Homework assignments will be turned in via the `git` version
control software, managed through github for education. Students should register for a github account.

# | topic | assigned | due | |
---|---|---|---|---|

1 | differentiation / integration | 09/07/2017 | 09/19/2017 | homework1.pdf |

2 | roots / ODEs | 09/21/2017 | 10/03/2017 | homework2.pdf |

3 | linear algebra | |||

4 | FFTs / fitting | |||

5 | hyperbolic PDEs | |||

6 | parabolic / elliptic PDEs | |||

7 | Monte Carlo / optimization | |||

8 | final project |

An overview of the course and logistics.

How computers store numbers, types of errors, ...

Version control, testing, ...

Numerical approximations for sampled and analytic functions.

Basic methods for reconstructing functions.

Basic methods finding zeros.

Methods for explicit and implicit integration, boundary-value and eigenvalue problems.

Basic methods for solving linear systems.

An overview Fourier transforms.

Fitting models functions to data.

Finite-volume methods for linear advection and Burgers' equation.

Smoothing, multigrid, and FFT methods for elliptic equations.

Explicit and implicit methods for the heat equation.

Random sampling applied to integration and optimization.

Optimization techniques using evolutionary concepts.

More optimization techniques.

An overview of techniques used in high performance computing.

Using neural networks for simply learning tasks.

Second-order finite-volume methods for hydrodynamics.

What have we learned?