Skip to main content Modules
Setting-up and The Command Line
- 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
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