(Left to Right): Avalanche activity cascades in a sandpile automaton; a vortex street formed by flow past a cylinder; and Turing patterns in a reactiondiffusion model. All simulations from the course homeworks; a higherresolution video may be viewed here
Computational Physics
Summary
Materials for computational physics course, taught by William Gilpin.
This course aims to provide a very broad survey of computational methods that are particularly relevant to modern physics research. We will aim to cover efficient algorithm design and performance analysis, traditional numerical recipes such as integration and matrix manipulation, and emerging methods in data analysis and machine learning. Our goal by the end of the class will be to feel comfortable approaching diverse, openended computational problems that arise during research, and to be ready to design and share new algorithms with the broader research community.
The class website is located here.
 If you are enrolled in 329 at UT, the syllabus and calendar are here.
 If you are enrolled in 381C at UT, the syllabus and calendar are here.
 For both UT courses, the Discussions page may be found here.
Contents
Many links below direct to Google Colab, and can be runinbrowser without installation as long as you are signed into a Google account. To download the raw source files, please refer to the GitHub repository. Some lecture videos are linked below, and the remaining lecture videos are linked in the Syllabus (above).
Homework Assignments
 HW1: The sandpile cellular automaton and directed percolation. [ipynb] Covers recursion, runtime scaling, vectorization
 HW2: Linear dynamical systems and decomposing a chaotic flow. [ipynb] Covers numerical linear algebra, optimization, and unsupervised learning
 HW3: Turing patterns and phase separation. [ipynb] Covers numerical integration; finitedifferences and spectral methods
 HW4: Predicting turbulence with operator methods. [ipynb] Covers Supervised learning, time series forecasting, ridge, kernel, and logistic regression
Lecture Slides

Lecture 1: Python syntax for Scientific Computing
[html] [ipynb] 
Lecture 1b: Objectoriented programming to find firstpassage times of Brownian motion
[html] [ipynb] 
Lecture 1c: Vectorization, arrays, and the Mandelbrot set
[html] [ipynb] 
Lecture 2: Runtime complexity, convolutions, and the continuous Game of Life
[html] [ipynb] 
Lecture 3: Finding the Feigenbaum constant with recursion and dynamic programming
[html] [ipynb] 
Lecture 4: Detecting the onset of turbulence with the Fast Fourier Transform
[html] [ipynb] 
Lecture 5: Condition Number and the irreversibility of chaos
[html] [ipynb] 
Lecture 6b: Probing collaborator graphs with LU matrix inversion
[html] [ipynb] 
Lecture 7: Spectral graph theory and the QR eigenvalue algorithm
[html] [ipynb] 
Lecture 9: Krylov subspace methods & Conjugate gradient methods
[html] [ipynb] 
Lecture 11a: Multivariate Optimization and Potential Flows
[html] [ipynb] 
Lecture 11b: Evolving Cellular Automata with Genetic Algorithms
[html] [ipynb] 
Lecture 11c: Monte Carlo methods and Hard Sphere Packing
[html] [ipynb] 
Lecture 12: Numerical Integration and predicting chaos
[html] [ipynb] 
Lecture 13: Variable step integration, symplectic and stochastic systems
[html] [ipynb] 
Lecture 14: A pragmatist’s guide to numerical integration
[html] [ipynb] 
Lecture 15: Diffusion, relaxation, and instability
[html] [ipynb] 
Lecture 16: Shocks, solitons, and hyperbolic partial differential equations
[html] [ipynb] 
Lecture 17: Spectral solving using the Dedalus Python Package
[html] [ipynb] 
Lecture 18: Supervised Learning & The Ising Model
[html] [ipynb] 
Lecture 19: Classification, Logistic Regression, and phases of matter

Lecture 20: Overfitting, biasvariance tradeoff, and doubledescent
[html] [ipynb] 
Lecture 22: Time series representation, featurizing chaos, kernel methods
[html] [ipynb] 
Lecture 23: Gaussian mixtures, expectationmaximization, and superresolution microscopy
[html] [ipynb] 
Lecture 24: Predicting the Reynolds number of turbulence with deep learning
[html] [ipynb] 
Lecture 25: Types of neural networks; symmetries in physical systems
[html] [ipynb] 
Lecture 26: Training neural networks with backpropagation
[html] [ipynb]
Notes
 How to use the highperformance computing cluster
 Matrix Derivatives notes
 Hopfield Networks and Spin Glasses [ipynb]
 Variational Autoencoders [ipynb]
 VectorQuantized Variational Autoencoders (VQVAE) [ipynb]
Laboratory Exercises
 Lab 1: Getting started with Python
 Lab 2: git, GitHub, and GitHub Pages
 Lab 3: Documentation and Formatting
 Lab 4: Automatically creating online documentation with Sphinx
 Lab 5: Unit Testing
 Lab 6: Structuring an OpenSource Repository
Example Final Projects
 Quantum Reinforcement Learning with the Grover method
 Modelling the contractile dynamics of muscle
 Tight binding and Anderson localization on complex graphs
 Neural System Identification by Training Recurrent Neural Networks
 Assimilating a realistic neuron model onto a reducedorder model
 Testing particle phenomenology beyond the Standard Model with Bayesian classification
 Monte Carlo sampling for manybody systems
Usage and improvements
If you are teaching a similar course, please feel free to use any or all of these materials. If you have any suggestions for improvements or find any errors, I would very much appreciate any feedback. Consider submitting corrections as issues or pull requests on GitHub.
For students, logistics and project questions are best posted on the classroom forum (Ed Discussions); errors in the materials should be issues on the course repository; for other issues, I can be reached via email
Requirements
We will primarily use Python 3 with the following packages
 numpy
 matplotlib
 scipy
 scikitlearn
 jupyter
For projects and other parts of the class, you might also need
 ipykernel
 scikitimage
 umaplearn
 statsmodels
 pytorch
 jax
 numba
Attributions
Portions of the material in this course are adapted or inspired by other opensource classes, including: Pankaj Mehta’s Machine Learning for Physics Course, Chris Rycroft’s Numerical Recipe’s Course, Volodymyr Kuleshov’s Applied Machine Learning course, FeiFei Li’s Deep Learning for Computer Vision course, Lorena Barba’s CFD course and Jim Crutchfield’s Nonlinear Dynamics course