UCSD PHYS 141/241: Computational Physics I#

Author: Javier Duarte

Jupyter Book Badge deploy-book

Course information#

This course is an upper-division undergraduate course and introductory graduate course on computational physics, focusing on large-scale deterministic simulations of collective systems. Basic knowledge of calculus, Newtonian mechanics, Linux, and programming in some language is expected.

The course structure will consist of weekly lectures on conceptual topics, e.g, Newtonian mechanics, and lab sections on computational tools, e.g., programming in Python and C/C++. Students will learn how to apply physical reasoning to programming, optimize and debug code, create simulations of physical systems. We will focus primarily on solving the \(N\)-body problem: predicting the individual motions of a group of celestial objects interacting with each other gravitationally. Through this problem, we will study increasingly accurate methods, including Euler, Runge-Kutta, leap-frog integration, tree-code methods, and Dehnen’s algorithm (i.e., gyrfalcON). Students will also learn how to use modern tools to efficiently solve scientific computing problems interpreted (Python) vs. compiled (C/C++) languages and how to link the two. There will be 3 homework assignments. There will also be a midterm and final project in which students will work in groups to reproduce the motion of one of 3 observed systems.

Student learning outcomes#

Upon successful completion of Physics 141/241, students will be able to:

  • Design computer programs to numerically solve physics problems, like the \(N\)-body problem.

  • Consider multiple approaches and compare their computational performance, accuracy, and fidelity to physical laws.

  • Find and choose the best tool or programming language for the task.

  • Visualize the solutions.

  • Collaborate with peers to tackle complex, realistic problems.

  • Present findings.

Schedule#