PHYS 436: Advanced computational physics

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.