General Information about 780J20 Computational Physics
- Course title:
- Computational Physics
- There is no required text but there will be readings for each
class session from
handouts passed out in class and background notes posted online.
Some useful references that we'll use are:
- The 2007 lecture notes
by Morten Hjorth-Jensen from the University
of Oslo. Prof. Hjorth-Jensen's philosophy of
teaching computational physics is similar to mine and he
covers similar topics.
(His course web pages:
Physics: Problem Solving with Computers
by Rubin Landau and Manuel Paez is the text we've used in the past.
It is not required but is a useful guide, including as a good
source of projects. Many of the codes we'll explore originated
from this book.
[It is available as an "E-book" from the OSU library---you can view any
part in your browser but you cannot
print more than a page at a time.]
- A First Course in Computational Physics and
Object-Oriented Programming with C++ by David Yevick is
a new book (published 2005) that looks very useful.
excerpts are available on Amazon.com.
- Numerical Recipes: The Art of
by Press et al. (2nd edtion) is available in
- There are many good C++ references to choose from if you want
to supplement the class.
Here are a few that are available online for OSU people from
the Safari page.
- Teach Yourself C++ in 21 Days
by J. Liberty and B.L. Jones.
The title sounds a bit goofy but the order of topics and
the pacing is well suited for learning C++ quickly.
- C++ Primer Plus
by Stephen Prata.
This has very good reviews, but works better as a reference than
a short-term learning guide.
- Practical C++
Programming by Steve Oualline (published
by O'Reilly). This has a lot of good advice for writing C++ programs.
- Another excellent resource for C++ programming is
(if you Google a C++ command, this is likely to be the first hit).
- 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, MATLAB,
C, fortran, or C++. The teaching strategy is to give you computer
programs and have you run and then modify (or debug) them as you
follow along through worksheets.
Email or visit Prof. Furnstahl
if you're concerned about
your preparation (e.g., if you have no experience at all).
- We'll start with an overview based on the first
part of the Hjorth-Jensen lecture notes and then cover
from the rest of the notes plus topics based on the Landau/Paez text
and on the instructors' latest prejudices
and class interest (to be
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
Matlab (or Mathematica)
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/N2,
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, calling Fortran libraries
from C++, plus additional topics as time
- Aspects of writing code: good programming practices;
how to test and debug a code (C++, fortran, MATLAB, 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;
- Object-oriented programming: What is it and when is it relevant for
- Using Mathematica or MATLAB 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.
- The computing environment for Windows users
will be the Dev-C++ environment
(either the Bloodshed or the wx version)
plus the gnuplot plotter. All the computers in
Smith 1094 (and hopefully Smith 1011) have this available. You
can download and install it on your own computer for free.
(See the 780J20 homepage for links.)
- For Linux users, the computer environment
include the GNU tools (also available in
Smith 1094). 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"). You can choose to use these
tools instead of Dev-C++.
- The GSL ("Gnu Scientific Library") is written in portable ANSI
C is a free numerical library.
- MATLAB is available on all platforms for registered OSU students.
- Prof. Richard Furnstahl
office: M2048 PRB
email: firstname.lastname@example.org or email@example.com
phone: 292-4830 (office) or 847-4026 (home)
- 1094 Consultants:
- Computer Consultant:
- Ms. Terry Bradley
office: 1199 PRB
phone: 292-8598 (PRB office) or 292-4269 (Stillman Hall)
- Class meets MW from 2:30pm to 4:30pm or
1:30pm to 3:30pm in Smith 1094 (come either time).
Each period will primarily be a hands-on lab
session (after a short lecture/question part).
- Office Hours:
- By appointment (asking in class is easiest) and . . .
[to be announced] (Furnstahl)
[to be announced] (TBA)
- In-class worksheets [30%]
- Assigned problems [40%]
- Project [30%]
- Web Pages:
- This info:
- Course home page:
Your comments and
suggestions are appreciated.
[Math and Physical Sciences]
[Ohio State University]
Physics 780J20 Computational Physics Information.
Last modified: 02:16 pm, December 22, 2008.