MATH 302 Numerical Analysis

Overview

MATH 302 Numerical Analysis is a required course for students in the Mathematics and Computer Science tracks of the Applied Mathematics and Computational Sciences major, and an elective for students in other majors.

Course Description

Predicting the weather; deciding the optimal value of a financial asset; sending spacecrafts to asteroids and to the edge of the solar system. These are only a few of the tasks that are achieved through a combination of mathematical modeling and numerical simulations. In this course we focus on the theoretical foundations and practical aspects of such numerical simulations.

First, we discuss the most fundamental and widely used algorithms for numerical simulations. This being a mathematically focused course, we go beyond a “numerical recipes” approach. We discuss the main practical and theoretical considerations for designing numerical algorithms (stability, accuracy, computational cost) and delve deep into the details of each algorithm.

Second, we do not shy away from the practical aspects of implementing numerical algorithms in an efficient manner. For the implementation of the algorithms we are working with the Julia programming language. This is a modern dynamic language for numerical computations which combines expressiveness and speed.

In terms of its placement within the curriculum, MATH 302 requires a solid foundation in MATH 201 Multivariable Calculus and MATH 202 Linear Algebra. Moreover, it requires basic programming skills which are covered in courses such as COMPSCI 101 Introduction to Computer Science or COMPSCI 201 Introduction to Programming and Data Structures or STATS 102 Introduction to Data Science. The knowledge from MATH 302 can be useful in several other courses in the mathematics curriculum and beyond. For example, MATH 303 ODE and Dynamical Systems and MATH 406 Mathematical Modeling use many of the numerical methods that we will discuss here. Moreover, a strong computational background, founded on deep understanding, can also be valuable for Signature Work.

Why Julia?

Julia is a relatively new programming language which combines the ease of Python, with the speed of C. As a language designed specifically for scientific computing, Julia offers facilities that are missing in Python and many other languages, while it can be much faster than standard Python. Even though Julia’s syntax has similarities with Python, you should also be aware of a few differences. From a programming language design point of view, Julia adopts certain interesting ideas such as multiple dispatch and macros; in this course, however, we will use only structured programming concepts.

Syllabus

MATH 302 Syllabus (Fall 2024)

Literature

Numerical Analysis. Richard L. Burden, J. Douglas Faires, and Annette M. Burden. Cengage Learning, 10th edition (2016).