Spring 2024 - PHYS 395 D100

Computational Physics (3)

Class Number: 2312

Delivery Method: In Person


  • Course Times + Location:

    Jan 8 – Apr 12, 2024: Tue, Thu, 12:30–2:20 p.m.

  • Exam Times + Location:

    Apr 18, 2024
    Thu, 3:30–6:30 p.m.

  • Prerequisites:

    MATH 260 or MATH 310; PHYS 255; CMPT 120 or equivalent. All prerequisite courses require a minimum grade of C-.



Computer-based approaches to solving complex physical problems. Includes topics such as Monte-Carlo and molecular dynamics techniques applied to thermal properties of materials; dynamical behavior of systems, including chaotic motion; methods for ground state determination and optimization, including Newton-Raphson, simulated annealing, neural nets, and genetic algorithms: symplectic methods; and analysis of numerical data. Quantitative.


The course covers advanced numerical methods for scientific computing and provides introduction to programming in modern High Performance Computing (HPC) environment. Topics include:

  • Representation of functions (cardinal vs. spectral basis, Fourier transform, orthogonal polynomials)
  • Linear algebra (solving linear equations, least square fits, Cholesky and singular value decompositions)
  • Root finding and optimization (bracketing and bisection, Newton’s method, steepest descent and Levenberg–Marquardt algorithm)
  • Ordinary differential equations (integration methods, initial vs. boundary value problems)
  • Hyperbolic partial differential equations (solution methods, numerical stability, wave equation)
  • Parabolic PDEs (heat diffusion equation, numerical stability, spectral methods)
  • Elliptic PDEs (boundary value problem revisited, Laplace equation, non-linear BVPs)
  • Optimizing for performance; GPU acceleration and Fast Fourier Transforms revisited
  • Scripting in Python (automating repeated tasks, making publication-quality plots)
  • Going parallel on shared memory and MPI architectures (if time allows) Programming environment is Python, with some exposure to Unix scripting and compiled languages later in the course. Homework and final are coding, you are expected to produce a working code that compiles, runs, and finds accurate numerical solution to the problem assigned. We will be writing the code live from scratch in the lab, so bringing your own laptop is encouraged so you can follow along.


  • Peer Review 10%
  • Assignments 50%
  • Final Exam 40%


Course work will be carried out in class by developing code to solve assigned problems for a given week’s topic.  These weekly assignments will constitute 50% of the grade.  The last 4 weeks of the course will be devoted to the investigation of two computational physics projects in depth.  These two projects will be worth 25% each.

  • Weekly assigned work  (50%)
  • 2 projects (2 x 25% = 50%)

Peer Review:

  • Before you submit your assignments for grading, you will have an opportunity to have your code (anonymously) reviewed by your classmates, and modify it based on feedback received. In turn, you will be expected to (blindly) review other's people code, and provide constructive feedback for them. The goal of this exercise is to improve codebase you develop through iterative interactions, much as in a real production environment. The reviews will be managed on Canvas, and are mandatory for your assignment to be graded by TA.

Evaluation Criteria:

  • Most of the assignments will be ‘solve this problem’ type. While you get the problem and start working on it in class, I expect you to spent some time off-line preparing for the task at hand (i.e. read up on the methods used and so on). You will submit completed code after peer review, and grading will reflect:
    • the code existence (including good coding practices)
    • does it parse/compile and run?
    • does it work? does it work CORRECTLY?
    • did you test for accuracy of your solution?
    • how efficient is the implementation?



Your personalized Course Material list, including digital and physical textbooks, are available through the SFU Bookstore website by simply entering your Computing ID at: shop.sfu.ca/course-materials/my-personalized-course-materials.

Department Undergraduate Notes:

Students who cannot write their exam during the course's scheduled exam time must request accommodation from their instructor in writing, clearly stating the reason for this request, within one week of the final exam schedule being posted.

Registrar Notes:


SFU’s Academic Integrity website http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating. Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the university community. Academic dishonesty, in whatever form, is ultimately destructive of the values of the university. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the university. http://www.sfu.ca/policies/gazette/student/s10-01.html