Modules

Setting-up and The Command Line

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

Tools of the (Software) Trade

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

Fundamental Python Packages for Science

Feb 4
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 6
matplotlib
matplotlib package for 2D and 3D plotting
random numbers
numpy and matplotlib in action: simulating Brownian motion with random numbers
Feb 11
stochastic dynamics
numpy and matplotlib in action: analyzing ensembles of stochastic trajectories

Midterm Project 1

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

Fundamentals of numerical computations

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

Solving Ordinary Differential Equations

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

ODE applications

Mar 6
projectile with air resistance
trajectory of a projectile with linear air resistance
March 9 – March 16
spring break
homework
March 18
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

March 18
Project 2 start
simulate a magnetic lens in a scanning electron microscope
April 1
Project 2 end
submit code and report through your team repository

Root finding

March 20
root finding
numerical root finding (bisection and Newton-Raphson algorithms)

Linear algebra

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

Partial Differential Equations

Mar 27
introduction to PDEs
types of PDEs; simple algorithm to solve Laplace’s equation
April 1
Poisson’s equation
algorithms to solve elliptic PDEs; 2D electrostatic problems
April 10
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 15
Crank-Nicholson algorithm
advanced solver for parabolic PDEs
April 17
Wave equation 1D
solving the wave equation for a string (a hyperbolic PDE) with time stepping
April 22
Wave equation 2D
Courant condition; solving the wave equation for a membrane

Monte Carlo methods

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

Final Project

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