Winter, 2005

**Course title:**- Computational Physics
**References:**- There is no required text but there will be readings from
handouts from class and background notes posted online.
Some useful references that we'll use are:
- The lecture notes [pdf] [ps] by Morten Hjorth-Jensen from the University of Oslo. Prof. Hjorth-Jensen's philosophy of teaching computational physics is similar to mine and the notes are free!
*Computational Physics: Problem Solving with Computers*by Rubin Landau and Manuel Paez is the text used in the past. It is not required but is a useful guide. [It is available as an "E-book" from the libary---you can view any part in your browser but you cannot print more than a page at a time.]*Numerical Recipes: The Art of Scientific Computing*by Press et al. is available in online editions.- There are many good C++ references to choose from, including some
targeted at science and engineering applications. A good, general
reference (suitable for beginners) is
*Practical C++ Programming*by Steve Oualline (published by O'Reilly).

**Prerequisites:**- The prerequisites are simply physics at least through
the undergraduate 26x series. It will be useful but not necessary
to have
*some*experience with Mathematica, C, fortran, or C++. The teaching strategy is to give you notebooks or codes and have you run and then modify (or debug) them as you follow along through worksheets. Email Prof. Furnstahl if you're concerned about your preparation (e.g., if you have no experience at all). **Material:**- The plan is to start with an overview based on the first
part of the Hjorth-Jensen lecture notes and then cover
selections
from the rest of the notes and from the Landau/Paez text
based on the instructors' prejudices
and class interest (to be
determined!).
In most cases the discussion will be framed by a physics topic
such as nonlinear oscillations (e.g., chaos).
We'll be using programs written in C++ and occasionally Mathematica or
Matlab
as we go along.
Some topics we will cover along the way:
- Errors and uncertainties in computations. E.g., one should understand how to analyze whether a calculation is limited by the algorithm or round-off error. We will come back to this topic repeatedly.
- Basic computational algorithms for: integration, differentiation,
differential equations, root finding. Less emphasis on
theory than on understanding how well an algorithm
should work (e.g., should the accuracy improve as 1/N
^{2}, where N is the number of points used) and what algorithm is appropriate for what situation (e.g., oscillatory integrals or integrands with singularities). In many (or most) cases you should be using a packaged library routine and not writing your own, so we'll learn how to use such a library and check the results. - What you should know about: random numbers, Monte Carlo integration and simulation, matrix computing, and so on.
- Aspects of writing code: good programming practices; how to test and debug a code (C++, fortran, Mathematica, or whatever); how to tune a code to run faster.
- Aspects of a computational physics project: breaking down a project into sub-problems; implementation issues (e.g., program design, code conventions, makefiles); use of graphics for visualization; verification
- Object-oriented programming: What is it and when is it relevant for computational problems?
- Using Mathematica for computational physics. This is a broad topic, of course, and we will just touch upon aspects here.

**Computing Environment:**- The general idea is to use basic and portable tools.
- We'll use the GNU tools in a Linux environment in Smith 2076/2082. These include g++, make, indent, gdb, gprof, and editors (e.g., emacs, nedit). This environment can be duplicated on a PC using Cygwin, by logging into a public Linux machine via an X-windows program (Xwin32), or by adding Linux to your computer ("dual booting").
- The GSL ("Gnu Scientific Library") is written in portable ANSI C is a free numerical library.
- Mathematica is available on all platforms in the Department and for $30/year for registered OSU students.

**Instructor:**- Prof. Richard Furnstahl

office: 4004 Smith Lab

email: furnstahl.1@osu.edu or furnstah@mps.ohio-state.edu

phone: 292-4830 (office) or 847-4026 (home)

**Grader/TA:**- Daniel Bibireata

office:

email: db@mps.ohio-state.edu

phone:

**Consultant:**- Terry Bradley

office: 2180 Smith Lab

email: bradleyt@mps.ohio-state.edu

phone: 292-8598 (office)

**Schedule:**- Class meets MW from 2:30pm to 4:30pm in Smith 2076/2082 (or at another arranged time for those with conflicts). Each period will primarily be a hands-on lab session.
**Office Hours:**- By appointment (asking in class is easiest) and . . .

[to be announced] (Furnstahl)

**Grading:**- Assigned problems [70%]
- Project [30%]
**Web Pages:**- This info:
`http://www.physics.ohio-state.edu/~ntg/780/2005/compphys_info_2005.php` - Course home page:
`http://www.physics.ohio-state.edu/~ntg/780/2005/compphys_2005.php`

Your comments and suggestions are appreciated.

[OSU Physics] [Math and Physical Sciences] [Ohio State University]

Last modified: 10:18 am, December 28, 2005.

furnstahl.1@osu.edu