## Courses

A number of courses, both Graduate and Undergraduate, are typically offered by members of our lab:

** Undergraduate courses **

## Math 211 – Numerical Analysis I

An introductory course in numerical computing using Matlab. Topics include errors, solutions of linear and non-linear equations, interpolation, numerical integration, solutions of ordinary differential equations.

##### Prerequisites:

Math 110 and Math 116 (Differential and Integral Calculus)

Numerical computing is primarily concerned with the computer solution of mathematically formulated problems. Matlab is a problem-solving environment that allows students to enhance important problem-solving and computer skills that form the basis for a state-of-the-art training in science or engineering. These are essential skills for those seeking careers in academia or high-tech industry. Experience with Matlab is a marketable skill that is often required by companies in their job ads.

## Math 313 – Numerical Analysis II

Numerical methods in linear algebra. Topics covered include approximation theory, least squares, direct methods for linear equations, iterative methods in matrix algebra, eigenvalues, systems of non-linear equations.

##### Prerequisites

Math 211, and Math 266 (Linear Algebra I or equivalent)

Numerical linear algebra is an incredibly common part of scientic computing. Traditional applications such as the numerical solution of ordinary dierential equations, partial dierential equations, or op- timization problems are important examples. However, the importance of numerical linear algebra is paramount in seemingly unrelated yet extremely exciting areas such as computer graphics and animation, intelligent search engines, machine learning, computer vision, image processing, and system design and control (to name but a few). This course provides a fundamental framework within which to understand the issues and algorithms behind numerical linear algebra, thus making it a critical part to a comprehensive modern undergraduate training in science and engineering. Examples of parallel implementations of algorithms will be given. The use of the software packagesMaple, Mathematica, and/or Matlab will be required.

## Math 314 – Numerical Analysis III

Numerical differentiation and integration, initial-value, and boundary-value problems for ordinary differential equations, introduction to numerical solutions to partial-differential equations.

##### Prerequisites:

Math 211 and Math 238 (Introduction to Differential Equations)

Ordinary differential equations (ODEs) are indispensable in mathematical models for applications in scienceand engineering. Typically, solutions of ODEs can only be approximated numerically with the aid of a computer. Solutions to these problems appear in many places, from underwater robots to space exploration to motion picture animation to nanotechnology. This course is about obtaining numerical solutions to ODEs both in the context of initial-value and boundary-value problems as well as arising from discretizations of partial differential equations. To this end, we will make extensive use of problem-solving software environments such as Matlab, Maple, and Mathematica.

**Graduate Courses**

## Math 851 – Parallel Programming for Scientific Computing

##### Prerequisites:

Permission of the instructor (experience in numerical analysis/programming useful)

Despite the extraordinary advances in computing technology, we continue to need ever greater computing power to address important fundamental scientific questions. Because individual compute processors have essentially reached their performance limits, the need for greater computing power can only be met through

the use of parallel computers. This course is intended for students who are interested in learning how to take advantage of parallel and distributed computing with the focus of writing parallel code for processor intensive applications to be run on clusters, the grid, the cloud, or shared infrastructure such as that provided

by Compute Canada. The objectives of this course are to give the students an understanding of how they can use parallel computing in their research and enable them to write parallel code for their high-performance computing applications. Extensive use of pertinent and practical examples from scientific computing will be made throughout. The programming languages used will be Matlab, Maple, sage, python, Fortran, or C. Both the shared and distributed paradigms of parallel computing will be covered via the OpenMP and MPI libraries.

###### Graduate Special Topics:

CMPT 898(Winter 2013): Numerical Software