Scientific Computing for Physical Systems (Physics 2300)

Daniel V. Schroeder, Department of Physics, Weber State University

Students: Please see the links below for copies of useful course materials.

Instructors: Please let me know if you are interested in using any of these materials in your own courses. I'll try to keep you informed of updates. At the August 2005 AAPT meeting I presented a poster advertising the lab manual to other instructors; here is a gif image of the poster for screen viewing and a pdf version for printing. Here is a table summarizing what the lab manual covers. Here is the TeX source (and figures) for the lab manual, in case you would like to modify it. Comments and suggestions are always welcome.

Course Outline

This course will be taught in a lab format, divided into nine projects for students to complete. The tentative list of projects is as follows:

1. Hello, World! How to compile and run a Java program. Introduction to program structure, classes, objects, and methods.
2. Range of a Projectile. Storing and manipulating numerical data using variables, expressions, conditional statements, loops, text output, and plotting graphs.
3. Adding Sine Waves. More practice with variables, expressions, loops, and graphics. Introduction to integer variables and function definitions. Fourier series.
4. Simulating Projectile Motion. Algorithms for simulating Newton's second law. Projectile motion with and without air resistance, in one and two dimensions. Introduction to graphical user interfaces.
5. Pendulum. Simulation of pendulum motion at small and large angles, including the effects of friction and driving forces. Chaos. Threads, graphics primitives, and animation.
6. Orbits. More algorithms for simulating Newton's second law. Circular and noncircular orbits, Kepler's laws, and the three-body problem.
7. Molecular Dynamics. Intermolecular forces. Arrays. Simulating many-particle systems. Optimizing performance. Phase transformations and other emergent behavior.
8. Random Processes. Computer-generated pseudo-random numbers. Simulation of an expanding gas, random walks, and nuclear decay.
9. [The Ising Model. Two-dimensional arrays. The Metropolis algorithm. Phase behavior of a magnetic system.] (This project is in the lab manual but will not be assigned in the course this year.)
10. Independent Project. Each student will design and carry out an independent physics programming project, and report on it both orally and in writing.