• 3UOC
  • Offered alternate years, Session 2
  • Times: Lectures Mon 12-13, Tue 17-18 + Labs Fri 12-14

Brief Syllabus:

The course is divided into four parts:

1. IDL - The Interactive Data Language:

  • An introduction to this numerical analysis package.

2. The Matrix Eigenvalue Problem:

  • Direct Method; the power method; transformation methods; Lanczos method.
  • Application to quantum Hamiltonian systems on a lattice.

3. Ordinary and Partial Differential Equations:

  • Simple methods for ordinary differential equations; partial differential equations as illustrated by the heat flow equation. Implicit, explicit and Crank-Nicolson finite difference techniques.
  • Applications to fluid flow, electrical potential problems, etc.

4. Simulation Techniques:

  • Monte Carlo methods; molecular dynamics. Application to calculating the equation of state of simple fluids.

Assumed Knowledge:

The course assumes familiarity with 2nd year Computational Physics PHYS2020, and either MATH2120 or MATH2130.

Course Goals:

Computer literacy is essential in virtually every branch of science. This is a practical course, assessed via exercises and a project, which aims to give students hands-on experience in writing clear and understandable computer code, compiling, debugging and testing programs, and checking that the results are sensible and correct. Lectures are of secondary importance, but specific topics include:

  • An introduction to IDL - the Interactive Data Language. IDL is a software package for data analysis and visualisation. It integrates a powerful, array-orientated mathematical language with mathematical analysis algorithms and graphical display techniques, providing great flexibility for the processing and interpretation of data.
  • A discussion of algorithms used for the solution of ordinary and partial differential equations, as illustrated by the heat flow equation. Techniques discussed include implicit, explicit and finite difference methods;
  • Application of the above to fluid flow, electric potential problems, etc.;
  • Monte Carlo methods in molecular dynamics, and applications to calculating the equation of state of simple fluids;
  • Approaches to the matrix eigenvalue problem: the direct method; the simple power method; transformation methods; and the Lanczos method;
  • Application to quantum Hamiltonian systems on a lattice.

Why is computational physics important?

Computing skills are essential in virtually every branch of science. In addition, these skills are highly valued by potential employers after you graduate. Graduates with a physics background, who can analyze a problem objectively and scientifically, and use the computer to obtain accurate, quantitative results and estimates, are in demand by business and industry. "It is widely believed in some sectors of the financial services industry", for example, "that a Ph.D. in science is essential for serious risk analysis." [Tony Butterfield, Assistant Commissioner for Taxation].

Within the discipline itself, computational physics has become recognized as a third branch of physics, lying in between the traditional branches of experimental and theoretical physics:

  • Monte Carlo simulations have become ubiquitous as a means of predicting the behaviour of large and complex systems on the basis of physical laws. These "computer experiments" are often carried out by large teams, rivalling experimental groups in size.
  • Finite difference or finite element algorithms are universally used for classical problems involving differential equations, such as the flow of gas past a wing, or predicting the weather;
  • The eigenvalue problem is important in most areas where vector quantities are involved, e.g. in Heisenberg's matrix formulation of quantum mechanics, and thus in atomic, nuclear and particle physics, as well as condensed matter physics.

How to succeed - Strategies for Learning

This is a practical course: with sufficient effort and perseverance, any student can complete the required exercises successfully. The major problem most students will encounter is that of "debugging" your code: identifying and removing all the mistakes in a program. All programmers learn that endless patience and persistence is needed for this task; but it does become easier with practice and experience. Students should learn to consult with each other and with the lecturer, rather than beating their brains out against a brick wall.

The course has many valuable lessons to teach: writing clear and well-annotated code; careful checking and testing of results; writing a clear and concise report. Students who work with care and attention to detail from the start will find their task much easier. The final project occupies the finalweeks at the end of the course, when students are required to put all these lessons into practice.

There is no final exam but students perform computer simulations in each of the three subject areas of the course and then investigate a 'project' computation in more detail. Lectures usually only proceed for about 9 of the 12 weeks of Session, leaving students time for their exercises and project. Students are encouraged to consult the lecturers as they proceed with their work.


  • 4 assignments 70%
  • 1 project 30%
  • No final exam


There course textbook is:

  • Computational Physics, N.J. Giordano & H. Nakanishi (Pearson)

Students may also find the following reference useful:

  • Numerical Recipes, H.J. Press, S.A. Teukolsky, W.T. Vetterling & B.P. Flannery (Cambridge)
The picture shows the solution of one of the student exercises. A solitary wave ( or soliton) has a certain disturbance u as a function of distance x at time zero ( curve marked with points). The other curves show the development at several later times.

Further Information

For more information about PHYS3610 contact:

last updated 1st February 2011