Physics 210: Intro Computational Physics
Learning Goals & Course Topics / Outline

Caveat: Depending on how things progress, we may not have time to achieve all of the following goals, or to cover all of the material in the outline, but we will try!

LEARNING GOALS

  1. THEMATIC GOALS

    1. To become acquainted with the use of modern computer technology to formulate and solve problems from physics (and related fields) computationally. This will generally involve:
      • Identifying or isolating a specific problem that requires solution.
      • Formulating the problem in mathematical terms, as precisely as possible.
      • Identifying appropriate approximations, algorithms, existing software etc. that will allow you to solve the problem.
      • Implementing the solution process on the computer, using programming (scripting etc.) in one or more computer languages as necessary.
      • Performing the calculations on the computer using your implementation.
      • Analyzing and interpreting the results of the calculations.
      • Possible iteration of one or more of the above steps in view of the results and analysis.

    2. To become familiar with basic-to-intermediate techniques in computer programming that will be of use in solving problems from physics and related fields.

    3. To be exposed to selected topics in physics and mathematics that are representative of some typical application areas in "real world" computational physics: some of this material may already be familiar to you.

    4. To gain experience in searching for, and finding, information on specific topics/areas; in understanding that information, and then applying it (i.e. research and self-instruction!)

    5. To gain experience in presenting the results of scientific work, and in writing up the results of that work in the form of a scientific paper

  2. SPECIFIC GOALS

    Successful completion of this course---which includes understanding the lecture material, completing the homeworks with a reasonable degree of proficiency, and presenting and submitting a good term project---should provide you with the ability to do the following at a minimum:

    1. Work comfortably within a Unix / Linux environment with an emphasis on the use of the command-line.
    2. Use Maple to interactively perform basic symbolic manipulation and numerical computations.
    3. Write simple Maple procedures (programming) as part of an introduction to the use of Maple as a powerful computing environment.
    4. Perform basic to intermediate level numerical computations using MATLAB interactively.
    5. Write basic to intermediate level MATLAB scripts and functions (programming).
    6. Use your MATLAB programming skills to address specific applications from physics and mathematics including:
      1. The use of finite difference techniques to approximately solve simple ordinary differential equations (equations of motion), of the type encountered in particle dynamics.
      2. Dynamics of one or more particles in interaction with one another or with an external potential using finite difference techniques.
      3. The use of finite difference techniques to approximately solve simple partial differential equations (wave equations)
      4. Solution of nonlinear equations
      5. Simulation of simple cellular automata
      6. A moderately challenging problem of your own choosing---i.e. your term project!

    Note that in the above (as well as the course outline below), references to MATLAB also refer to the open source "clone" octave, which does not have all of the features of MATLAB, and we use will octave exclusively in the computer labs. However, I will do my best not to use any octave-specific elements in the course, so that anything that you learn about octave should apply to MATLAB (in particular, any octave code presented should also work in MATLAB).

COURSE TOPICS & OUTLINE (again, note the above caveat: I cannot guarantee that this schedule is exact!)

Note: There will often be overlap in the topics covered in lectures and especially labs (e.g. finite difference approximation, MATLAB programming)

Unix: 3 lectures, 3 labs

  • Unix / Linux fundamentals with a focus on use of the command line

Maple: 4 lectures, 4 labs

  • Use of a modern "symbolic manipulation" language for routine computations
  • Basic Maple programming

MATLAB: 1 lecture, 9 labs

  • Introduction to MATLAB as an interactive tool for numerical calculations
  • Introduction to MATLAB plotting facilities
  • MATLAB programming: writing scripts and functions
  • Specific MATLAB scripts/programs mostly motivated by topics covered in lectures

Project Proposal Presentations: 2 lectures and labs


Finite Difference Approximations for ODEs: 3 lectures

  • Definition of finite difference approximation (FDAs)
  • Use of FDAs to approximate simple ordinary differential equations, such as are encountered in particle dynamics

Finite Difference Approximations for PDEs: 3 lectures

  • Mathematical formulation and solution of wave equation in one spatial dimension
  • Use of FDAs to approximate simple wave equations

Newton's Method: 2 lectures, 2 labs

  • Newton's method for solution of nonlinear equations (single and systems)
  • Examples of use of Newton's method, and implementation using MATLAB

Cellular Automata: 2 lectures

  • Definition of cellular automata (CA), some examples, applications to physics and other areas and related models
  • Implementation of CA's using MATLAB

Final Project Presentations: 2 lectures and labs


Maintained by choptuik@physics.ubc.ca.