Provides an introduction to the most commonly used techniques for numerically solving boundary value problems and time dependent problems and the corresponding linear systems. Topics include finite difference methods, the finite element method, the spectral method, spectral collocation methods, Euler and Runge-Kutta methods. Scientific computing skills such as advanced code and memory management will be developed. Involves hands-on learning with weekly group interactions and a final project. Department enforced prerequisite: Knowledge of a programming language such as Python, and C++ is required.