Stanford Mechanics and Computation

Home page | CV | Teaching | Research | Publications | Students


Teaching Material: undergraduate curriculum

A sequence of undergraduate mathematics courses has been developed for students interested in pursuing degrees in engineering. The sequence covers important areas of engineering mathematics, such as multivariable calculus, linear algebra, ordinary and partial differential equations, numerical methods, probability and statistics, and emphasizes engineering applications and computation using Matlab. The intent is a) to introduce freshmen and sophomores to the relevant mathematics and computational tools early in their college career, b) to excite their interest in the engineering disciplines and provide early exposure to the engineering faculty and the use of computation in solving real engineering problems.

CME 100 Vector Calculus for Engineers

Computation and visualization using MATLAB. Differential vector calculus: vectors and matrices, analytic geometry in space, functions of several variables, partial derivatives, gradient, unconstrained maxima and minima, Lagrange multipliers. Integral vector calculus: multiple integrals in Cartesian, cylindrical, and spherical coordinates, line integrals, scalar potential, path independence, surface integrals, Green's, divergence, and Stokes' theorems. Examples and applications drawn from a variety of engineering fields.

CME 102 Ordinary Differential Equations for Engineers

Analytical and numerical methods for solving ordinary differential equations arising in engineering applications. Solution of initial and boundary value problems, series solutions, Laplace transforms, and non-linear equations. Numerical methods for solving ordinary differential equations, accuracy of numerical methods, linear stability theory, finite differences. Introduces MATLAB programming as a basic tool kit for computations. Problems from various engineering fields.

CME 104 Linear Algebra and Partial Differential Equations for Engineers

Introduction to linear algebra: matrix operations, systems of algebraic equations, Gaussian elimination, undetermined and overdetermined systems, coupled systems of ordinary differential equations, eigensystem analysis, normal modes. Fourier series with applications, partial differential equations arising in science and engineering, analytical solutions of partial differential equations. Numerical methods for solution of partial differential equations: iterative techniques, stability and convergence, time advancement, implicit methods, von Neumann stability analysis. Numerous examples and applications drawn from a variety of engineering fields.

CME 106 Introduction to Probability and Statistics for Engineers

Introduction to probability: random variables, independence, and conditional probability. Discrete and continuous distributions, moments, distributions of several random variables. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, non-parametric tests, regression and correlation analyses. Applications in engineering, industrial manufacturing, medicine, biology, and other fields.

Teaching Material: graduate curriculum

CME343/ME339: Programming Parallel Numerical Algorithms with CUDA and MPI

This class will give a hands on experience with programming parallel computers. We will start the class with the traditional approach to programming parallel computer clusters using the Message Passing Interface (MPI). The focus of the class however will be on programming new parallel processors, in particular NVIDIA graphics processors using the Compute Unified Device Architecture (CUDA). This class will combine numerical algorithms relevant to many fields in engineering, along with a coverage of the software and languages used to program parallel computers, and a discussion of some of main strategies for improving performance. Topics will include: important concepts in parallel computing (efficiency, etc), MPI, examples of applications parallelized using MPI (stochastic simulations, finite-difference, molecular dynamics), architecture of a GPU processor, CUDA, parallel algorithms on GPUs (reduction, scan, sort, etc), fast Fourier transforms, finite-difference codes using MPI and CUDA, linear algebra and sparse matrices. Pre-requisites include: programming language (C or preferentially C++) and numerical algorithms (solution of differential equations, linear algebra, Fourier transforms).

Slides from the CUDA tutorials lectures:

ME 346A: Introduction to Statistical Mechanics

Concepts and tools of classical statistical mechanics and applications to molecular systems. Thermodynamics and probability theory. Statistical ensembles. Information and entropy. Free energy and transition between metastable states. Brownian motion, Langevin dynamics, and Fokker-Planck equation. Non-equilibrium systems: correlation and response functions, fluctuation-dissipation theorem. Applications to self-assembly, thin film growth, and structural transformation.

ME 346B: Introduction to Molecular Simulations

Algorithms of molecular simulations and underlying theories. Molecular dynamics, time integrators, modeling thermodynamic ensembles (NPT, NVT), free energy, constraints. Monte Carlo simulations, parallel tempering. Stochastic equations, Langevin and Brownian dynamics. Applications in solids, liquids, and biomolecules (proteins). Programming in Matlab and C++.

ME 346C: Advanced Techniques for Molecular Simulations

Advanced methods for computer simulation of proteins. Symplectic time integrators, multiple-time stepping, energy conservation. Long-range force calculation, particle mesh Ewald, fast multipole method, multigrid. Free energy methods, umbrella sampling, acceptance ratio, thermodynamic integration, non equilibrium methods, adaptive biasing force.