Physics 210: Introduction to Computational Physics (Fall 2009)

COURSE HOME PAGE (this page):

Instructor: Matthew (Matt) W. Choptuik Office Hours: Mon & Wed: 1:00-2:00 PM & Drop-in (e-mail appt. preferred)
Office: Hennings 403 Web page:
Office Phone: 604-822-2412
Other Personnel: Ben Gutierrez (TA)  & Jason Penner (Lab Asst.)

  • LABS: TUESDAY & THURSDAY 15:30-17:00 -- HENNINGS 205


Course Summary

This course will provide an introduction to techniques and applications in computational physics. Topics to be covered include: Unix / Linux fundamentals, including basic shell programming, an introduction to symbolic & numeric computation and programming with Maple; MATLAB and MATLAB programming, and various topics and applications in physics and numerical analysis.

There will be a significant programming component in virtually all stages of the course.

See the Syllabus below for a provisional lecture/lab schedule, as well as the Learning Goals & Course Topics page for a more detailed overview.

Text, Reference Material and Notes

Due in large part to the significant diversity in topics to be covered, there is no required text for the course.  However, because much of the course will be MATLAB based, I have adopted the following as an optional text
I feel that this book is written at a suitable level for an introductory course, has generally been well-received by students in reviews that I have seen, and should be especially useful if you have little or no experience in MATLAB, and, importantly, little or no experience in computer programming. The UBC bookstore currently has copies in stock. Unfortunately, even though it is paperback and less than 400 pages it is $92.00, which I consider quite expensive. In this regard, you should note that you may be able to get cheaper copies via online purchases from sites such as and, including earlier versions of the text, such as the 2nd edition, which should be adequate for use in this course.

You should also observe that there is a wealth of online material available about MATLAB (as well as its open-source "clones", such as octave and scilab, which we will encounter during the course).  I've accumulated a few links to some key sites in the Online Course Resources page, including a link to a site that provides (for individual use only), a complete text by the author of the first version of MATLAB.

The Course Resources page also contains links to sites relevant to other topics that we will cover in the course. Some of these topics, such as Unix/Linux and basic MATLAB programming, will be directly discussed in lectures or covered in labs. Others, such as the use of a text editor of your choosing, will be self-study topics, since a key goal of this course is to enhance your ability to use help facilities, online resources and the like to master new algorithms and software applications.

Finally, at times I will distribute notes to the class (or at least make them available on-line via the Course Notes page).  However, at other times, I will lecture using the whiteboard, and then you will be responsible for taking your own notes.

Grades: Tests, Homework & Labs, Term Projects and Late Work Policy

EXTREMELY IMPORTANT!!  Please refer to the Homework Page for the course policy on Homework / Term Projects and Academic Dishonesty

Your final grade in this course will be determined on the basis of your performance on four (4) homework assignments, a term project, and a presentation on your term project, with the following weighting
  • Homework Assignments: 60%
  • Term Projects (including writeup): 35% (due Dec. 4, 11:59 PM)
  • Term Project Presentation: 5%
Final marks may be subject to small adjustments based on overall class performance.


There will be NO tests or exams in this course.

Homework and Labs


See the syllabus below for (provisional) scheduled homework due dates. Homework will be assigned about 2 weeks before it is due; late homework may be accepted at the instructor's discretion, and as per the Late Homework Policy described below. As the course progresses, the Homework Schedule web page will be updated with information concerning the homeworks. including the homework handouts themselves.

Each homework will contribute equal weight to your final mark, but again; the homework component of your mark may be subject to adjustments based on overall class performance.


A chief purpose of the labs is to provide you with time to acquire the extremely important "hands on" skills needed to master the course material, and which by nature, difficult to teach/learn in a traditional lecture setting.  For most of the lab sessions, you will be encouraged to work on your homeworks and term projects, assisted as necessary by the TAs, myself, and your classmates.  In other instances, we will cover specific topics, such as configuration of your Linux desktop environment, whereby you will be encouraged to work at a workstation in "real time", following along a presentation by myself or the TAs.  In the early stages of the course, you should also take advantage of the lab time to discuss possible term project ideas with us.  Finally, at any time, you should feel free to use lab time to ask any of us about aspects of the computer work that are giving you trouble.

Term Projects

The term project component of PHYS 210 is extremely important, and for most of you, will present the most significant challenge in the course. Either individually or in consultation with the instructor, each student must choose a topic for a term project in some area of computational physics or a related area, carry out the project, produce a write-up on it in the basic style of a scientific/technical paper, and make two short presentations to the class on their work.   

You are encouraged to develop your own project ideas, but all project topics must be approved by the instructor. During the first few couple of weeks or so, as I get to know the class, I will post some possibilities for term projects on the Term Project Ideas page.

Topics for term projects should be chosen no later than October 15.  During the classes and lab periods on October 20 and 22, each student will give a brief presentation on their proposed project (a random speaking order will be chosen). The amount of time available for each presentation will depend on the number of students who are registered in the course at that time, but is likely to be of the order of 5 minutes, followed by about another 5 minutes of questions, comments and discussion.  Contrary to what this section originally stated, these proposals will have to be prepared and delivered in electronic form.  There will be no grading of this aspect of your term projects: the purpose of this exercise is to ensure that you have chosen an appropriate topic, and that you have a good (though perhaps not complete) understanding of what will be required to complete it.

In keeping with the spirit of the course, all term projects should involve programming to a significant extent, and students are encouraged to use MATLAB, or possibly Maple, to implement their projects: assuming that you do so, you are expected to do more than use some built in MATLAB/Maple facility to perform the bulk of your computations.

You are also free to use other programming languages of your own choice: if you wish to do so, I only ask that you check with me before you start work on your proposal so that I can ensure that the overall project appears appropriate.

All term projects must be written up in the style of a scientific/technical paper; a typical structure will be

  • Title and Abstract
  • Introduction, including basic description of problem to be solved, simulated, analyzed etc.
  • Mathematical formulation of the problem as relevant
  • Description of techniques, algorithms, analysis tools etc. used to solve the problem, including discussion of overall flow of the program
  • Discussion of computations (numerical experiments) that were performed
  • Analysis of results
  • Conclusions (may include suggestions for future work)
  • References / Bibliography
  • Appendix including program listing, if desired

Note that for some projects, not all of the above sections will be relevant: but as always, feel free to check with me should you have any questions about your writeup.  I will also ask you to make any programs that you write for your term project available to me through your homework directories on hyper, and, except in special cases (which need to be cleared by me), I should be able to run your programs on hyper using the appropriate software environment (MAPLE, MATLAB, Java etc.).  In particular, your term project code cannot be MS-Windows specific!

The suggested paper length is about 10-20 pages, double spaced (please!), including title page, figures and graphs and references.  If you include program listings, they should be listed single spaced. You are encouraged to use the LaTeX typesetting system to write your paper, but this is not mandatory. 
NEW & IMPORTANT: You must e-mail me an electronic version of your writeup when you have completed it (PDF preferred, but .doc or one of the OpenOffice formats will also be acceptable).

As noted above, the term project is worth 35% of your grade. Factors that will be taken into account in my grading of your projects will include (but are not necessarily limited to): scope and difficulty of the problem, degree to which project was completed successfully, effort devoted to the project, originality, and completeness and quality of the written report. Your written report and the source code for your project are due by December 4, 11:59 PM.

Please refer to the News item HERE for additional details concerning what you must supply in terms of your project source code and documentation.

In addition, during the classes and lab periods on December 1 and 3, each student will again give a brief presentation, this time on their completed project (and in the reverse order to that used for the proposal talks).  Agina, these talks must be prepared using presentation software and will have to be e-mailed to me no later than 9:00 AM on the morning you are scheduled to speak.  Again, depending on the number of students, these talks will likely be about 10 minutes, including questions, and dealing with the challenges one faces in giving such a short presentation will also be discussed in the labs. The final presentation is work 5% of your final grade,

IMPORTANT!! You should note that completing a good term project is much different than finishing a homework, or even a few homeworks: in particular, it is virtually impossible to do a decent job on a term project in the space of a few days.  It is the nature of computational physics (as in experimental physics and in many other pursuits) that things will go wrong unexpectedly, and it can often take much more time than anticipated to get programs to work.  Moreover, coding a functional program is typically just the first stage in completion of the project; you also will need time to generate and analyze results, as well as to write things up.  In addition, you can expect that the projects will be graded reasonably rigorously, and that doing well in the homeworks will not automatically guarantee that you do similarly well with your project.  Nonetheless, I expect that provided you have choose a good topic (for you!), and allocate a reasonable amount of time for your work, you will all be able to do well with this part of the course.

In summary then, please take your term projects very seriously, and do your best to begin work on them as soon as is feasible. 

Finally, be sure that you understand and abide by the University and course policies concerning Academic Honesty as they pertain to your term projects, and as are laid out in the Homework page.

Late Work Policy (Strictly Enforced)

From time to time, and provided that the circumstances are sufficiently extenuating, work may be submitted late, subject to the following conditions:

  1. If an extension is required, the extendee must submit a request for an extension, via e-mail, to the instructor, before the assignment is due.
  2. Submitted homework which absolutely must be submitted before the homework key is distributed, must similarly be accompanied by an e-mail indicating completion of the work.

Note that all messages are to be sent to the instructor, not the TA, and that if you finish the homework on time, no additional action on your part is required.

Finally note that if you are unable to complete an assignment or term project on time due to illness or an equivalent circumstance (e.g. severe illness and/or death of a family member), please inform me as soon as possible and I will ensure that you are given sufficient time to complete your work once your situation has been resolved.

Computer Access

All students will be provided with an account for use in the Physics & Astronomy Computer Lab currently located in Hennings 205, and use of the machines in that lab (and also in Hennings 203) should suffice for completion of your homework and projects. 

However, if you have a laptop, you will be encouraged to bring that to class, and especially to the lab sections, since at times you may find it more convenient to work using your laptop rather than one of the workstations in the computer lab.  This is particularly the case if you are willing to install Linux on your machine.  Similar comments apply to machines you may have access to at home; you should also be able to use them to complete at least part of the course work, especially if they have Linux installed.  The TAs and I will be happy to supply you with DVDs of a popular Linux distribution (Mandriva) that you can use for installation, and will also be happy to attempt to assist you with any issues you may have with the installation and subsequent configuration of your Linux system.

Other Help

You should also feel free to contact me via e-mail (preferred) or phone if you have quick questions, or if you are having difficulty getting something to work. Perhaps most importantly, you should strive to develop the ability to make effective use of the available documentation for the software you are using (on-line help, man pages, Web resources, etc.). Online help tends to be extensive these days, and since the advent of powerful search engines such as google, relatively easy to find. A little time invested in learning how to extract the information you are looking for usually pays off.


Tuesday Thursday

September 10
Course Overview & Unix
Introduction to Computer Lab, account configuration
September 15
Unix [SOTD]
Homework Directories, Startup Files, Aliases
September 17
Unix [SOTD]
Shell vars, bash pattern matching, IO redirection, pipes, grep, quotes
September 22
Unix [SOTD]
Bash scripts
September 24
Maple [SOTD]
Brief Maple demo; free time to work on, and get help with, HW1
September 29 [SOTD]
Maple [H1 due]
Free time to work on homework
October 1 [SOTD]
Simple Maple Procedures
October 6 [2009 Nobel Prize in Physics | The science [PDF]]
Maple procedures, Maple 2d plotting
October 8
Discussion of Term project proposals and MATLAB
Free time to work on homework
October 13 [SOTD]
MATLAB [H2 due]
Free time to work on homework and discuss term projects
October 15
MATLAB  [Term project topics must be chosen]
Lab Assignment Handout [PDF] & Solutions [PDF]
October 20
Project Proposal Presentations I
Project Proposal Presentations I
October 22
Project Proposal Presentations II
Project Proposal Presentations II
October 27
Startup file, core files & simple plotting
Lab assignment handout [PDF] & Solutions [PDF]
October 29
Finite Difference Approximation
Simple FDA using MATLAB
November 3
Finite DIfference Approximation
The Nonlinear Pendulum Equation
November 5
Finite Difference Approximation
The Nonlinear Pendulum Equation / Free time
November 10
Finite Difference Approximation
Free time to work on homework & projects
November 12
Finite Difference Approximation [H3 due]
The Advection Equation
November 17
Newton's Method [H4 due Wed Nov 18, 11:59 PM]
Free time to work on homework & projects
November 19
Cellular Automata
Free time to work on homework & projects
November 24
Free time to work on projects
Free time to work on projects
November 26
Free time to work on projects
Free time to work on projects
December 1
Project Presentations I
Project Presentations I

December 3
Project Presentations II
Project Presentations II
[Projects due Dec 4, 11:59 PM]

Syllabus Notes

  • Lecture topics are listed in regular font; Special lab activities, other than working on the current homework and/or term projects, and which will be updated throughout the course, are listed in italics. [SOTD] entries are links to web sites associated with "Simulation of the day" animations shown in class.
  • Homework assignments are denoted H1 through H4 and have due dates as indicated above.
  • See Learning Goals & Course Topics page for a more detailed outline of course material.
  • Term projects are due DECEMBER 4 (last day of classes, not last class day!))

Other Important Dates

  • Tuesday, September 20: Last day for withdrawal from this course without withdrawal standing of "W" recorded on a student's academic record.
  • Monday, October 12: Thanksgiving Day, University closed.
  • Friday, October 16: Last date for withdrawal from most this course with withdrawal standing of "W" recorded on a student's academic record.
  • Wednesday, November 11: Remembrance Day. University closed. NO CLASS.
  • Friday, December 4: Last day of classes.
  • Tuesday, December 8: Examinations begin.
  • Tuesday, December 22: Examinations end.

See the UBC 2009/2010 Calendar and Academic Year [all year] pages for more information

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