*(Left to Right): Avalanche activity cascades in a sandpile automaton; a vortex street formed by flow past a cylinder; and Turing patterns in a reaction-diffusion model. All simulations from the course homeworks; a higher-resolution video may be viewed [here](https://player.vimeo.com/video/739921904?title=0&byline=0&portrait=0)*
# Computational Physics
## Summary
Materials for computational physics course, taught by [William Gilpin](http://www.wgilpin.com/?utm_source=en_us_bhg226180pc).
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, open-ended computational problems that arise during research, and to be ready to design and share new algorithms with the broader research community.
## For UT students
+ The schedule for both courses is [here](https://docs.google.com/document/d/1UVL81pZ0vFfIqcGProZlmkOE4eFB6jO7fZFgt8wl-Io/)
+ If you are enrolled in 329 at UT, the syllabus is [here](https://docs.google.com/document/d/1c3_XWOZAYTVmQGKoqcifzEXX7VwzWmhIRT4zVcy9lFU/edit?usp=sharing).
+ If you are enrolled in 381C at UT, the syllabus is [here](https://docs.google.com/document/d/1URJmdpTVG8E2bLLu5xAHctICb6krbZ0fC0hO2i2xEXY/edit?usp=sharing).
+ For both UT courses, the Ed Discussions page may be found [here](https://edstem.org/us/courses/80780).
+ Lecture videos are on Box or the Syllabus, but they are not linked publicly here.
## Contents
The class website is located [here](https://www.wgilpin.com/cphy/?utm_source=en_us_bh224180tg). From the class website, the sidebar links to Chapters, Homeworks, Labs, and Appendices. To navigate to a specific lecture, click on the lecture title in the "Chapter" section. Within a given chapter or homework, there is a link at the top of the page to open the notebook in Google Colab.
## Example Final Projects
*The guidelines and rubric for the final project and presentation can be found [here](vignettes/project.md)*
+ [Quantum Reinforcement Learning with the Grover method](https://github.com/jiangzz-lab/GroverQLearning)
+ [Modelling the contractile dynamics of muscle](https://github.com/jakemcgrath1999/muscle_model)
+ [Tight binding and Anderson localization on complex graphs](https://github.com/ravikoka/qgraph)
+ [Neural System Identification by Training Recurrent Neural Networks](https://github.com/liuyuezhang/nsi)
+ [Assimilating a realistic neuron model onto a reduced-order model](https://github.com/sepstein22/computational_brain)
+ [Testing particle phenomenology beyond the Standard Model with Bayesian classification](https://github.com/ramreddy-physics/Madgraph_Search)
+ [Monte Carlo sampling for many-body systems](https://github.com/Potatoasad/Computational-Physics-Final-Project)
+ [Simulating Anderson localization and Hofstadter butterflies](https://github.com/r-siddiqi/Hofstadter/tree/main)
+ [Optimizing Tokamak design](https://github.com/milestesta/RMT_Tokamak)
## 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](https://github.com/williamgilpin/cphy/).
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](https://github.com/williamgilpin/cphy/); for other issues, I can be reached via [email](mailto:wgilpin@[saxetu%20spelled%20backwards].edu)
## Requirements
This book uses Python 3, with particular dependence the following packages
+ numpy
+ matplotlib
+ scipy
+ scikit-learn
+ jupyter
Other parts of the book and projects depend on the broader Python ecosystem, including
+ ipykernel
+ scikit-image
+ umap-learn
+ statsmodels
+ pytorch
+ jax
+ numba
## Acknowledgments
Portions of the material in this course are inspired by other open-source classes, including: [Pankaj Mehta's Machine Learning for Physics Course](https://github.com/drckf/mlreview_notebooks), [Chris Rycroft's Numerical Recipe's Course](https://people.math.wisc.edu/~chr/am205/fall19/), [Volodymyr Kuleshov's Applied Machine Learning course](https://github.com/kuleshov/cornell-cs5785-2022-applied-ml), [Fei-Fei Li's Deep Learning for Computer Vision course](http://cs231n.stanford.edu/), [Lorena Barba's CFD course](https://lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes/) and [Jim Crutchfield's Nonlinear Dynamics course](http://csc.ucdavis.edu/~chaos/courses/nlp/)