There are five core courses: Scientific Computing I & II, Computer Organization and Programming for Scientific Computing, and Advanced Scientific Computing I & II. Numerical Analysis I (AMSC 666) and AMSC 714 or AMSC 715 may be taken in place of Scientific Computing I & II.
Scientific Computing I & Scientific Computing II (AMSC 660 & 661) will cover fundamental topics in computational methods for discrete systems, linear and nonlinear systems, optimization, ODEs, Fourier and wavelet transforms, and elliptic and time-dependent PDEs.
The course CMSC 616 will cover fundamental issues of computer hardware and software, parallel computing and data managment relevant for programming for scientific computing.
Advanced Scientific Computing I & Advanced Scientific Computing II (AMSC 663 & 664) applies the topics covered in AMSC 660 & 661 and 662 in the context of a year-long personal project to develop software designed to carry out a computational scientific task in a high performance computing environment. The project will provide each student with hands-on experience on all aspects of modern computing, including the formulation of the problem (with a faculty mentor), discretization and programming of the resulting system of equations, visualization of data, and oral and written presentation of the results.