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!



    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


    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:

    1. Work comfortably within a Unix / Linux environment with an emphasis on the use of the command-line.
    2. Write basic Unix / Linux scripts (programming) to automate tasks, extend the functionality of existing commands, or create entirely new commands.
    3. Use Maple to interactively perform basic symbolic manipulation and numerical computations.
    4. Write simple Maple procedures (programming) as part of an introduction to the use of Maple as a powerful computing environment.
    5. Perform basic to intermediate level numerical computations using MATLAB interactively.
    6. Use MATLAB's plotting facilities for viewing, analyzing and understanding data.
    7. Write basic to intermediate level MATLAB scripts and functions (programming)
    8. Use your MATLAB programming skills to address specific applications from physics and mathematics including
      1. The use of finite difference techniques to approximate 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.
      3. Simulation of simple cellular automata
      4. Basic data analysis
      5. Solution of linear equations, numerical integration and solution of nonlinear equations
      6. Processes with a random or stochastic element such as random walks and diffusion limited aggregation
      7. 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 generally imply "MATLAB and/or one of the available open-source MATLAB "clones", such as octave or scilab). In addition, although we will be using MATLAB and/or the "clones" as the primary programming language in this course, the programming techniques that you acquire and the algorithms that you encounter should be transferable to essentially any general purpose programming language including C/C++, Java, Python, Fortran etc. etc.

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

Unix: 3.5 lectures

  • Unix / Linux fundamentals with a focus on mastery of the command line
  • Basic shell programming

Maple: 4 lectures

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

MATLAB: 4 lectures

  • Introduction to MATLAB as an interactive tool for numerical calculations
  • Introduction to MATLAB plotting facilities
  • MATLAB programming: writing scripts and functions
  • Simple MATLAB scripts/programs motivated by applications in physics and related fields

Project Proposal Presentations: 2 lectures and labs

Finite Difference Approximation: 1 lecture

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

Particle Dynamics: 2 lectures

  • Overview / review of dynamics of one or more particles interacting with one another and/or with an external potential
  • Using MATLAB to simulate and analyze problems in particle dynamics

Cellular Automata: 2 lectures

  • Definition of cellular automata (CA), some examples, applications to physics and other areas and related models
  • Using MATLAB to simulate CA

Data Analysis: 1 lecture

  • Using MATLAB to perform basic data analysis tasks

Solution of Linear Equations / Numerical Integration: 1 lecture

  • Review of definitions (mathematical expression) of linear systems and definite integrals
  • Using MATLAB to solve linear equations and compute numerical integrals

Solution of Nonlinear Equations: 1 lecture

  • Newton's method for the solution of a single nonlinear equation
  • Implementation of Newton's method in MATLAB

Random Processes: 2 lectures

  • Definition and generation of (pseudo)-random numbers
  • Random walks and implementation in MATLAB
  • Diffusion limited aggregation and implementation in MATLAB

Final Project Presentations: 2 lectures and labs

Maintained by Supported by CIFAR, NSERC, CFI, BCKDF and UBC