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.