Sussman Lab

PHYS 436: Advanced computational physics

Sep 01, 2025
2 minutes

This page collects lecture notes and materials for PHYS 436 – a computational physics class for students who have already had an initial exposure to programming and numerical methods. The notes are a work in progress and will be updated throughout the Fall 2025 semester.

The Preface outlines the course philosophy, learning goals, and the pedagogical approach for the semester.

Module 0: A First Introduction to Julia is a hands-on, idiosyncratic tour of the Julia programming language. It uses the problem of calculating pi in increasingly unusual ways as a running theme. Along the way, we cover all the essentials: from installation and workflows to data structures, environments, and multiple dispatch.

Module 1: Foundations of Scientific Computing (which we cover in parallel with Module 0) moves from the specifics of a language to the craft of computational science. It answers the question: how do we build solid, reproducible projects? The notes cover version control with Git, project organization, designing robust experiments, and reasoning about algorithmic performance.

Module 2: ODEs dives into simulating the time evolution of physical systems. Using the N-body problem of celestial mechanics as an initial guide, the notes explore a series of integration methods ranging from the humble Euler method to the robust black-box RK4 family to symplectic methods for Hamiltonian systems. The module ends with the construction of a molecular dynamics “virtual lab” for studying the physical properties of materials.

Module 3: Random numbers and Monte Carlo methods explores the power of randomness as a computational resource. The notes start with the fundamentals of pseudorandom number generation and Monte Carlo integration. We then turn to the Metropolis algorithm, building code that flexibly handles classic spin and particle-based systems. The module ends with an introduction to Hamiltonian Monte Carlo as a physics-inspired solution for Bayesian inference of model parameters.