Modules

Setting-up and The Command Line

Jan 9
intro and set up
bash, git, anaconda, Visual Studio Code
Jan 11
Unix shell
file system, bash

Tools of the (Software) Trade

Jan 16
version control
git SCM
Jan 18
Python
Python refresher, writing programs
Jan 23
modularization
modules and object-oriented programming with classes
Jan 25
debugging
finding and correcting common (and weird) errors in Python code

Fundamental Python Packages for Science

Jan 30
Jupyter
The Jupyter notebook interface for documents combining text, code, and graphics.
NumPy
numpy package for array computing, the basis for all scientfic work in Python
Feb 1
matplotlib
matplotlib package for 2D and 3D plotting
random numbers
numpy and matplotlib in action: simulating Brownian motion with random numbers
Feb 6
stochastic dynamics
numpy and matplotlib in action: analyzing ensembles of stochastic trajectories

Midterm Project 1

Feb 8
Project 1 start
analyze the dilemma zone in front of a traffic light
Feb 23
Project 1 end
submit code and report through your project repository

Fundamentals of numerical computations

Feb 6
numbers
number representations and numpy data types revisited
Feb 8
errors
systematic and round-off errors, error analysis of numerical algorithms

Solving Ordinary Differential Equations

Feb 13
differentiation
numerical differentiation
Feb 15
ODEs
Introduction to solving ordinary differential equations.
Feb 20
Standard Form
Formalism for solving ODEs: the standard form of ODEs.
Feb 22, Feb 27
Integrators
basic algorithms (Euler, Runge-Kutta, Verlet) for numerically integrating coupled ODEs
Feb 29
Theory of symplectic integration
Hamilton’s equation of motion, energy conservation, and why the semi-implicit Euler algorithm conserves energy

ODE applications

Mar 12
projectile with air resistance
trajectory of a projectile with linear air resistance
Mar 14
baseball simulation
simulation of a curveball throw with Baseball physics (quadratic air resistance and Magnus force due to spin)
optional
molecular dynamics
solving Newton’s equations of motion for many interacting particles

Midterm Project 2

Mar 14
Project 2 start
simulate a magnetic lens in a scanning electron microscope
Mar 28
Project 2 end
submit code and report through your team repository

Root finding

Mar 19
root finding
numerical root finding (bisection and Newton-Raphson algorithms)

Linear algebra

Mar 21
linear algebra
solving standard linear algebra problems (matrix equations, eigenvalues) with numpy
optional
SVD
singular value decomposition

Partial Differential Equations

Mar 26
introduction to PDEs
types of PDEs; simple algorithm to solve Laplace’s equation
April 2
Poisson’s equation
algorithms to solve elliptic PDEs; 2D electrostatic problems
April 9
Diffusion equation
solving parabolic PDEs with time stepping; 1D heat/diffusion equation
perspective on PDEs
connection between diffusion equation and Laplace equation; physical interpretation of classes of PDEs
April 11
Crank-Nicholson algorithm
advanced solver for parabolic PDEs
April 16
Wave equation 1D
solving the wave equation for a string (a hyperbolic PDE) with time stepping
April 18
Wave equation 2D
Courant condition; solving the wave equation for a membrane

Monte Carlo methods

April 23
Monte Carlo integration
high dimensional integrals with uniform and importance sampling
April 25
Markov Chain Monte Carlo simulations
1D and 2D Ising model for a ferromagnet

Final Project

March 28
Final Project Overview
Introduction to the Final Project: time line, proposal, pitches
April 4
Project pitches
Present your project to the class and gather a team.
April 27
abstracts
submit your project abstract
April 29
presentations
submit your project presentation video
code
submit your project code to your repository
April 30–May 3
Q&A
virtual Q&A with each team