PHY432 — Computational Methods in Physics
The course provides an introduction to using the computer as a tool to solve problems in physics. Students will learn to analyze problems, select appropriate numerical algorithms, implement them using Python, a programming language widely used in scientific computing, and critically evaluate their numerical results. Problems will be drawn from diverse areas of physics.
This class starts in Spring 2022 as PHY 432. (The class was running as PHY 494 from Spring 2016 to Spring 2021.)
For a brief overview, see this page and the Syllabus.
Topics
The topics of the class include applications in electrostatics and heat transfer as well as applications such as writing a molecular dynamics code to simulate liquid argon or simulating the lenses in an transmission electron microscope.
Students worked on Final Projects in 2019 as diverse as path integral Monte Carlo, simulations of celestial bodies such as Jupiter’s Trojan asteroids or the solar system, electrons in J J Thompson’s classical experiment, molecular dynamics of organic molecules or rock salt crystals, or the collective behavior of self driving cars. The Final Projects in 2016 included navigation in the solar system, real time digital soundeffect processing, and agent-based modeling such as generating a winning strategy for Black Jack.
Time and requirements
All times and dates to be confirmed.
- Spring 2022: listed as PHY 432
- TTh 1:30pm — 2:45pm
- PHY 252 is a pre- or co-requisite.
- Programming experience as taught in PHY 202 (online) or equivalent required.
If possible, bring your own laptop (Linux, MacOS, Windows).
Course Description
The course provides a practical introduction to using the computer as a tool to solve problems in physics. Students will learn how to work in a scientific computing environment, to analyze a physical problem, select appropriate numerical algorithms to solve the problem, and to implement them. The course will introduce the students to computer graphics and object oriented design. Students will work in teams, critically evaluate their approaches and results, and present them in a professional manner to their peers. The instructor will introduce problems and guide students to their solution.
This is a three-credit hour course. It will be taught in a computer laboratory/studio setting. The emphasis is on practical work, with the instructor initially introducing the problem, and the students then pursuing pre-structured programming exercises and projects. Assessment will primarily focus on projects, including group projects, in which students solve a problem as a small team and present their work as a short report or as a presentation.
In order to facilitate the interactive setting, the capacity will be capped at 24 students. The class is designed to work equally well for remote and in-person students.
PHY 252 is a co-requisite.
Basic programming experience in Python is required; the Online class PHY 202 (by the same instructor) is recommended and can be taken in the preceding Spring, Summer, or Fall semester.
Learning outcomes
Students will learn to program computers in order to solve physical problems. In particular, they will be able to write object oriented code in the open source Python programming language, which is widely used in science and engineering and in some of the biggest tech companies such as Google.
Students will also learn how to solve problems in teams and to communicate their work clearly and effectively.
By the completion of the course, students should be able to quickly apply their knowledge to problems they encounter in other courses and experimental and theoretical research projects.
List of topics
- Working in a scientific computing environment: basic Linux and command line.
- Version control with git
- Programming in Python (including object oriented programming and use of the numpy library).
- Plotting and visualization with matplotlib.
- Numerics fundamentals: numbers, errors
- Differentiation and Integration
- Ordinary differential equations (ODE), integration of equations of motion
- Linear algebra (vectors, matrices, eigenvalue problems, SVD)
- Root finding and optimization
- Partial differential equations (PDE) e.g. Poisson’s equation, diffusion equation, wave equation
- Monte Carlo methods (importance sampling, Ising model)
For mode details see the course modules overview.
Books and Resources
Recommended text books
- Computational Modeling and Visualization of Physical Systems with Python, Jay Wang (2016) Wiley-VCH. ISBN: 978-1-119-17918-4
- Computational Physics: Problem Solving with Python, 3rd Edition, Rubin H. Landau, Manuel J. Páez, Cristian C. Bordeianu. (2015) Wiley-VCH. ISBN: 978-3-527-41315-7
Additional books and online resources
- Effective Computation in Physics. Field Guide to Research with Python, Anthony Scopatz and Kathryn D. Huff. (2015) O’Reilly
- A Survey of Computational Physics, Rubin Landau, Manuel J. Páez, and Cristian C. Bordeianu. (2011) Princeton University Press. Free online ComPADRE edition and PDF
- Software Carpentry (especially the lessons on the Unix Shell, Version Control with Git, and Programming with Python)
Course website
- Course page py4phy.github.io/PHY432
- PHY432 GitHub site
Videos
For a number of lessons in Spring 2020, videos were created, which you can look at to get a feel for the class.
Discuss: “PHY432 — Computational Methods in Physics”