Computational Methods is a course that covers techniques to approximate procedures which are typically mathematical in nature. Linked to this is an exploration of ways in which computing is deficient. Naturally, some “good enough” techniques are needed because we either cannot solve the procedure analytically or because the analytical method is intractable. Students will primarily use the Julia programming language for their programming work.This course is not as focused on programming technique as it is on understanding fundamental underlying principles and applying them. Our goal for the course is to understand and implement techniques for solving mathematical problems computationally in an accurate (numerically close to the “answer”) and stable (resistant to small variations in the input) way.
Asymptotic Notation
a. Big O, Big Omega, Big Theta
Programming in Julia
Numerical Methods
a. Quadratic Formula
Solving Ordinary Differential Equations
a. Euler’s Method
Errors
a. Measuring Errors
b. Sources of Errors
c. Accuracy and Stability
Numeric Representation and Computer Architecture
a. Binary Representation
b. Floating Point Representation
c. Significant Figures
d. Bit Operations
e. Endianness
f. Machine Epsilon
Finding Polynomial Roots
a. Bisection Method
b. Newton-Raphson Method
Numerical Differentiation
a. Limits and Differentiation
b. Differentiation of Discrete Functions
Numerical Integration
a. Risch’s Algorithm
b. Trapezoidal Rule
c. Simpson’s Rule
Matrix Algebra
a. Introduction to Matrix Algebra
b. Gaussian Elimination Method
c. LU Decomposition Method
Regression
a. Linear Regression
b. Non-linear regression
Case Studies for Fast Approximation Techniques
a. Efficiently finding primes
b. Card shuffling techniques
*There are many topics listed here; we will likely not complete all of them.