PHYSICS 551: Methods of Computational Physics

(Rev. 30 September, 2001)

Course description:

The theme of this course is Richard Hamming's famous dictum, "The purpose of computing is insight, not numbers." The course introduces students in quantitative disciplines—Engineering, Physical and Biological Sciences, Economics, Applied Mathematics or Commerce—to techniques of mathematical modeling, as well as the numerical solution of problems for which closed-form, analytic solutions are unknown.

The course will cover theoretical and practical aspects of numerical analysis carried out on digital computers. The examples will be drawn from various fields including physics, engineering, ecology, and economics. The subjects covered will include solution of equations, evaluation of functions, and analysis of data.

Under the rubric of “practical aspects” will be emphasis on key elements of computer programming technique: clarity, simplicity, maintainability, documentation, and safety; as well as testing and debugging. Issues of algorithmic efficiency and execution speed will be discussed in detail.

Language: Students may use any programming language for exercises and assignments. However, since the instructor is only familar with FORTRAN, BASIC, Pascal, C and Forth, only programs in these languages will receive comments and suggestions. Programs submitted in other languages (C++, Logo, Lisp, Scheme, Awk, Perl, APL, Python, Haskell, Eiffel, Java, etc. etc.) will be graded on a results-only basis. Languages with built-in “black box” solvers—Maple, Mathematica, Matlab or MathCad, e.g., as well as certain spreadsheets—are acceptable only to the extent that the programs submitted to fulfill assignments eschew such features. My reason for this is that black boxes negate the primary goal of understanding the algorithm (although I encourage students to use such facilities to check their work).

Prerequisites: Students are expected to have mastered differential and integral calculus; to possess some familiarity with linear equations, matrices and determinants; and to be comfortable with complex arithmetic. The student should be able to program in one or more of the permitted languages. Forth systems that operate under MS Windows 9X+ are available to students wishing to gain familiarity with that language.


For the life of me I do not know how to give a fair in-class exam in this course. So the final grade will be based on homework, a minor project (aka midterm), and a major project.
       Weighting for final grade
       Item     Weight
(biweekly, about 6 assignments)
       Minor project     25%
       Major project     45%

Topics included

(Coverage will depend on class progress.)
  1. Number systems used in (digital) computing

  2. Roots of transcendental equations and polynomials

  3. Representing functions

  4. Optimization

  5. Linear algebra and matrix problems

  6. Monte Carlo methods

  7. Numerical quadrature (evaluating integrals)

  8. Ordinary differential and difference equations

  9. Partial differential equations

  10. Integral equations

  11. Symbolic manipulation and computer algebra

  12. Digital data processing

  13. Programming in style