Lecture-related Material and Resources

First,as mentioned on the home page, a reproduction of the lecture notes booklet is currently not available on the web site. What follows are links to resources that back up the material you cover in the lectures and lab. sessions. Note that there are a number of online C courses on the web. A list of some of those courses and other web-based resources may be found here . In addition, a list of physics-based Java applets may be found at the following excellent site: The Virtual Laboratory. Note that these applets aren't solely related to the Computing II course material but deal with a very wide range of physics topics.

Before we start, to highlight the importance of well-structured, error-trapped code, here are two sites that describe some of the more spectacular disasters attributed to elementary programming errors..........
Some disasters attributable to bad numerical computing.
A collection of high profile software bugs.

The animated gif above was taken from and is copyrighted by The Animation Factory .

The links given in the following sections are to material that is related to particular aspects of the module. If you find any interesting C, computational physics or numerical methods links, please let me know (my contact details are on the homepage).

  1. Arrays, Pointers and Data Manipulation

    Files for Lab. Session 1:

    Right click on the following files and select "Save Link As" to download each file to your f:/ drive: decay.c , greyscle.c , light.dat

    . Following lecture and lab. session 1, you should:

    Some useful links to pointer and array-related notes and tutorials:
    A Tutorial on Pointers and Arrays in C, Ted Jensen
    Pointers

    Image processing-related sites:
    An Image Processing Tutorial for Beginning Undergraduate Students, Clifford Watson, Department of Applied Mathematics, University of Washington
    Washington State University's Digital Image Processing Instructional Database,

  2. Finite differences, Numerical Differentiation & Interpolation

    Files for Lab. Session 2:
    Right click on the following files and select "Save Link As" to download each file to your f:/ drive: diff1.c , diff2.c


    From lecture 2 onwards we will cover some of the basic numerical methods that are used in computational physics/ science. A good online numerical analysis course, written by Dr. Aaron Naiman, Jerusalem College of Technology, may be found here . Note, however, that this course is slightly too detailed in some places for our purposes. However, the online slides and notes provide a great deal of background information that you'll find useful.

    Following lecture and lab. session 2, you should:

  3. Solving Differential Equations Numerically

    Files for Lab. Session 3:
    Right click on the following link and select "Save Link As" to download the file to your f:/ drive: graphpen.c .

    Following lecture and lab. session 3, you should:

    There are a large number of sites dedicated to Euler's method and the numerical solution of ODEs. A few are listed below:
    William Kath's Elementary Differential Equations online course.
    ODE Laboratories: A Sabbatical Project by Christopher A. Barker
    Euler's method
    Differential Equations and Oscillations , Nikos Drakos, Computer Based Learning Unit, University of Leeds.

    Lecture 6 of the Computing II module deals with the behaviour of a damped, driven pendulum. A Java simulation of the pendulum, based on a Runge-Kutta method, may be found by clicking on the lecture 6 link below. Similarly, for more examples of the use of Euler and Runge-Kutta methods in the analysis/ simulation of physical systems, visit the Virtual Laboratory .

  4. Numerical Integration
    Following lecture and lab. session 4, you should:
    • understand and be able to apply basic methods of numerical integration: the trapezoidal rule and Simpson's rule
    • understand how improper integrals may be treated numerically;

    Joseph L. Zachary's Introduction to Scientific Programming site features an excellent tutorial on numerical integration (including an informative Java applet).

  5. Solution of Equations, Iteration & Convergence
    Following lecture and lab. session 5, you should:
    • understand and be able to write C code to implement the bisection and false position methods for finding the roots of equations;
    • understand the difference between bracketed and non-bracketed methods of root-finding;
    • understand and be able to write algorithms based on Newton's method for root finding;
    • understand and be able to apply the secant-method;
    • appreciate the convergence and divergence issues inherent in Newton's method.

    Links to Newton's method-related sites:
    Wolfram Research's MathWorld site.
    Joseph L. Zachary's Introduction to Scientific Programming site. (Includes a Java applet-based tutorial).
    Newton's method.

  6. Chaos
    Following lecture 6, you should:
    • understand the differences between a linear, stochastic and chaotic process/system;
    • understand what is meant by "extreme sensitivity to initial conditions" ;
    • understand how chaotic behaviour is exhibited by the damped, driven pendulum;
    • understand what is meant by a phase space map ;
    • understand how fractals and chaotic systems are related;

    Links to chaos-related sites and a detailed Java-applet based tutorial on chaos in the damped, driven pendulum may be found on the Lecture 6 page.

  7. Fourier Series
    Following lecture 7 and lab. session 6 you should:
    • understand what is meant by the Fourier series representation of a periodic signal;
    • understand the key differences between Fourier analysis of continuous and discrete signals;
    • understand what is meant by sampling and the Nyquist limit ;
    • be able to write C routines that synthesise periodic waveforms from their Fourier components;
    • understand the relationship between the frequency and time domain representations of signals and be able to apply this knowledge to writing C algorithms that produce frequency spectra of simple signals;

    Some links:
    Fourier series applet by Steve Crutchfield and Hsi Chen Lee at John Hopkins University. Recommended!!
    Manfred Thole's Fourier synthesis page.
    The Living Mathematics project at the University of British Columbia (features a range of Java applets)

  8. Monte Carlo Methods
    Following lecture 8 and lab. session 7 you should:
    • understand what is meant by the Monte Carlo method;
    • understand how Monte Carlo methods may be used to model diffusion processes;
    • be able to write simple programs that simulate random walks of particles;
    • understand and be able to write Monte Carlo integration routines;

    Some links:
    An Introduction to Monte Carlo Methods, The U.S. Computational Science Education Project
    Monte Carlo integration
    StudyWeb's list of links to Monte Carlo-related sites
    Monte Carlo cluster growth (diffusion limited aggregation). A Java implementation (by Chi-Hang Lam) of a program very similar to the cluster growth program (written in C) that I used in the lecture.


Home