# Courses

**Courses offered in a given term are listed on Mosaic.**

* Courses marked with an asterisk (*) are half courses. Courses marked with a pound (#) sign are quarter courses*.

*Please note not all courses are offered every year.*### CSE *600 / Mathematical Foundations for Computing

An introduction to the mathematical tools of scientific computing. Topics will include: Algebra: bases, vector spaces, sets of linear equations, matrices, linear transformations; Calculus: limits, derivatives, integration, vector calculus; Differential equations: separable equations, integrating factors, first order linear equations; Series: Taylor series, Fourier series and transforms, Laplace transforms; Probability and Statistics: discrete random variables, continuous random variables, and probability density functions.

## Core Courses:

### CSE *700 / Foundations of Scientific Computing

An introduction to scientific computing, modeling, and numerical methods covering such topics as Taylor series and truncation errors, numerical differentiation and integration, constrained optimization, and solving sets of: linear equations; linear algebraic equations; ordinary differential equations; and partial differential equations.

### CSE *701 / Foundations of Modern Scientific Programming

An introduction to modern scientific programming providing a background to such topics as binary systems, Unix and Windows based operating systems, parallel and distributed computing, and popular programming languages.

## Parallel Programming Courses:

### CSE *745 / Parallel and High Performance Computing

An introduction to general ideas and principles of parallel programming followed by a presentation of the shared-memory and message-passing approaches to parallel code development based on, respectively, the OpenMP and MPI standards. Students will develop simple parallel applications in C and FORTRAN. Students will acquire the skills necessary to operate, debug and modify existing parallel codes and available libraries (such as PDE solvers) using these standard approaches for various applications.

### CSE *746 / Advanced Parallel and High Performance Computing

The goal of this course is to equip students with theoretical knowledge and practical skills necessary to independently develop scalable parallel and high-performance codes for various applications. The course covers a selection of advanced topics concerning both software and hardware aspects of code development. Topics may include the use of parallel debuggers and profilers, optimization of numerically intensive codes for specific architectures, novel hardware (e.g. GPGPU cards) and related languages such as CUDA, mixed use of threads/Open MP and message passing/MPI, issues with extreme parallel scaling such as I/O and fault tolerance and parallel languages such as CHARM++.

## Computational Techniques Modules:

### CSE #703 / Computational Linear Algebra

In addition to solution techniques for large linear systems, this module will also review the computational techniques of eigenvalue and singular value problems, various decompositions (LU, Cholesky), and linear least square problems. Sparse matrix techniques and various parallelization strategies will be considered.

### CSE #707 / Visualization and 3D Rendering

This course will provide an introduction to the use of graphics to visualize research data (grids, meshes, particles) in two and three dimensions. It will cover algorithms (surface drawing, transparency), real time visualization, post processing (including large data sets) and generating animations and movies. It will introduce OpenGL as a low-level mechanism to access hardware graphic acceleration as well as other popular toolkits such as vtk and provide experience with visualization tools built on these foundations.

### CSE #708 / Symbolic Computing and Automatic Differentiation

This module presents an overview of techniques for symbolic computation applied to solving linear equations, analytic and automatic differentiation and integration of functions, and analytic solution of differential equations. Hybrid, symbolic-numeric methods will be considered as well.

### CSE #739 / Introduction to Iterative Methods in Computational Science

This module reviews the theoretical foundations and various implementation issues concerning the use of iterative methods. The focus will be on solution techniques for sparse linear systems, such as arising in numerical solution of PDEs, systems of nonlinear equations and numerical solution of integral equations.

## Computational Physical Sciences Courses and Modules:

### CSE #712 / Introduction to Particle Methods

The uses of particles for numerical simulations of physical systems. Particles can correspond to real objects (molecules, stars) or represent parcels of fluid or material. When solving Hamiltonian systems, particles can be considered to be a Monte Carlo type realization of characteristics making up the phase space. Numerical methods for these systems will be examined, including smoothed particles, symplectic time integrators, discreteness effects and parallelization strategies. Applications include hydrodynamics, gravitational and molecular dynamics, and protein folding and computational materials.

### CSE #717 / Foundations of Computational Finite Element Methods

This module provides an introduction to the general theory of the finite element method; formulation of finite elements; construction and optimization of meshes for finite elements and the treatment of boundaries. Issues for programming finite element codes including parallelization are in the focus as well.

*6E04 / Computational Modeling of Microstructure Formation (same as Materials Science and Engineering *6E04)

*6G03 / Computational Physics (same as Physics and Astronomy *6G03)

#705 / Computational Chemistry: An Introduction (same as Chemistry #705)

*749 / Mathematical and Computational Fluid Dynamics (same as Mathematics *749)

#718 / Combustion Theory and Modeling

#719 / Numerical Solution of Scalar Transport

#721 / Compressible Computational Fluid Dynamics (same as Physics & Astronomy #719)

*724 / Solid Surface Modeling Techniques (same as Mechanical Engineering *724)

#748 / Principles of Pulse and Two-Dimensional NMR (same as Chemistry #748)

*752 / Optimization of Chemical Processes (same as Chemical Engineering *752)

*753 / Modern Antennas in Wireless Telecommunications (same as Electrical and Computer Engineering *753)

*756 / Computational Fluid Dynamics (same as Mechanical Engineering *756)

*760 / Computing Patterns in Strings (same as Computing and Software *722)

#770 / Molecular Electronic Structure Theory (same as Chemistry #770)

#771 / Concepts in Quantum Chemistry (same as Chemistry #771)

#773 / Numerical Methods and Computational Chemistry (same as Chemistry #703)

#774 / Statistical Mechanics (same as Chemistry #774)

*783 / Finite Element Method (same as Civil Engineering *703)

### Computational Optimization, Design and Control Courses and Modules:

*6TI3 / Fundamentals of Image Processing (same as Computing and Software *6TI3)

*710 / Engineering Optimization (same as Electrical and Computer Engineering *710)

#722 / Algorithms for Constrained Optimization

#723 / Algorithms for Unconstrained Optimization

#725 / Surrogate Modeling and Space Mapping

#726 / Sensitivities, Tolerances and Yield-Drive Design

#728 / Numerical Time Domain Electromagnetic Technique

#729 / Finite Element Techniques for Electromagnetics

*731 / Linear Systems (same as Electrical and Computer Engineering *730)

#732 / A Basic Introduction to Data Mining

#733 / Advanced Topics in Knowledge Discovery

*735 / Convex Optimization in Engineering (same as Computing and Software *735)

#736 / Computational Geometry in the Plane

#737 / Computational Geometry in Dimension 3 and Higher

*740 / Numerical Methods for Ordinary Differential Equations and Differential Algebraic Equation (same as Computing and Software *740)

*741 / Development of Scientific Computing Software

(same as Computing and Software *741)

*742 / Special Topics in Communication Systems and Networks (same as ECE *738)

*743 / Optimization Software Design (same as Computing and Software *737)

*750 / Model-Based Image Reconstruction (same as Computing and Software *750)

*759 / Medical Image Registration (same as Computing and Software *759)

*762 / Optimization Under Uncertainty (same as BUS Q787)

*776 / Mathematical Programming: Theory and Algorithms (same as BUS Q 773)

*768 / Special Topics in Signal Processing (same as Electrical and Computer Engineering *768)

*782 / Data Structures and Algorithms (same as Computing and Software *702)

*791 / Algorithms for Parameter and State Estimation (same as Electrical and Computer Engineering *771)

## Computational Biosciences:

*6Y03 / Genomes and Evolution (same as Biochemistry *6Y03)

#711 / Advanced Statistics and Computational Methods I (same as Psychology #711)

*720 / Bioinformatics (same as Biology *720)

*734 / Neural Network Models of Cognition and Perception (same as Psychology *734)

*738 / Computational Biochemistry (same as Biochemistry *730)

*757 / Special Topics in Biophysics (same as Physics and Astronomy *756)

*796 / Models of the Neuron (same as Electrical and Computer Engineering *796)

## Other Courses:

*780 / Data Science

*799 / Special Topics in Computational Engineering and Science