Mail Code: 943054042
Email: icmeadmissions@stanford.edu
Web Site: http://icme.stanford.edu/
Courses offered by the Institute for Computational and Mathematical Engineering are listed under the subject code CME on the Stanford Bulletin's ExploreCourses web site.
ICME is a degree granting (M.S./Ph.D.) interdisciplinary institute at the intersection of mathematics, computing, engineering and applied sciences. ICME was founded in 2004, building upon the Scientific Computing and Computational Mathematics Program (est. 1989).
At ICME, we design stateoftheart mathematical and computational models, methods, and algorithms for engineering and science applications. The program collaborates closely with engineers and scientists in academia and industry to develop improved computational approaches and advance disciplinary fields. In particular, it leverages Stanford's strength in engineering applications in the physical, biological, mathematical, and information sciences, and has established connections with nearly 20 departments across five schools at Stanford.
The program identifies research areas that would benefit from a multidisciplinary approach in which computational mathematics plays a critical role. This multidisciplinary intellectual environment is a core strength of ICME, with interaction among students and faculty with diverse backgrounds and expertise. Students and faculty are active in many research areas: aerodynamics and space applications, fluid dynamics, protein folding, data science including machine learning and recommender systems, ocean dynamics, climate modeling, reservoir engineering, computer graphics, financial mathematics, and many more.
The program trains students and scholars from across Stanford in mathematical modeling, scientific computing, and advanced computational algorithms at the undergraduate and graduate levels. Courses typically provide strong theoretical foundations for the solution of real world problems and numerical computations to facilitate application of mathematical techniques and theories. Training offered includes matrix computations, computational probability and combinatorial optimization, optimization, stochastics, numerical solution of partial differential equations, parallel computer algorithms, and new computing paradigms, amongst others.
ICME offers service courses for undergraduates and graduate students to fulfill departmental requirements, core courses for master's and doctoral students in Computational and Mathematical Engineering, and specialized electives in various application areas.
The ICME master's program offers both specialized and general tracks. Currently, the program is offering specialized tracks in Computational Geosciences, Data Science, Imaging Science, and Mathematical and Computational Finance.
Graduate Programs in Computational and Mathematical Engineering
University regulations governing the M.S. and Ph.D. degrees are described in the “Graduate Degrees” section of this bulletin.
Learning Outcomes (Graduate)
The purpose of the master’s program is to provide students with the knowledge and skills necessary for a professional career or doctoral studies. This is done through coursework in mathematical modeling, scientific computing, advanced computational algorithms, and a set of courses from a specific area of application or field. The latter includes computational geoscience, data sciences, imaging sciences, mathematical and computational finance and other interdisciplinary areas that combine advanced mathematics with the classical physical sciences or with challenging interdisciplinary problems emerging within disciplines such as business, biology, medicine, and information.
The Ph.D. is conferred upon candidates who have demonstrated substantial scholarship and the ability to conduct independent research. Through course work and guided research, the program prepares students to make original contributions in Computational and Mathematical Engineering and related fields.
Master of Science in Computational and Mathematical Engineering
The University’s basic requirements for the M.S. degree are discussed in the "Graduate Degrees" section of this bulletin. The following are specific departmental requirements.
The master's degree in Computational and Mathematical Engineering is intended as a terminal professional degree and does not lead to the Ph.D. program. While there is a M.S. to Ph.D. option, students interested in the doctoral program are strongly encouraged to apply directly to the Ph.D. program.
Admission
Prospective applicants should consult the Graduate Admissions and the ICME admissions web pages for complete information on admission requirements and deadlines.
Applications to the M.S. program and all supporting documents must be submitted and received online by January 12, 2021, the deadline published on the ICME admissions web page.
See below for information on the M.S. to Ph.D. program petition process.
Prerequisites
Fundamental courses in mathematics and computing may be needed as prerequisites for other courses in the program. Check the prerequisites of each required course. Recommended preparatory courses include advanced undergraduate level courses in linear algebra, probability, differential equations, stochastics, and numerical methods and proficiency in programming.
Financial Assistance
The department awards a limited number of fellowships, course assistantships, and research assistantships to incoming graduate students. Most course assistantships and research assistantships are awarded to students in the doctoral program in ICME. If there is an insufficient number of Ph.D. students to staff all course and research assistantship positions available, these positions may be open to master’s students. However, master’s students are not guaranteed financial assistance.
Coterminal Master's Program
Stanford undergraduates who want to apply for the coterminal master's degree must submit their application no later than eight weeks before the start of the proposed admit quarter. The application must give evidence that the student possesses a potential for strong academic performance at the graduate level. Graduate Record Examination (GRE) General Test scores are required for application review. A student is eligible to apply for admission once the following conditions have been met:
 completion of six nonSummer quarters at Stanford or two nonSummer quarters at Stanford for transfer students
 completion of 120 units toward graduation (UTG) as shown on the undergraduate transcript, including transfer, Advanced Placement exam, and other external test credit
 declaration of an undergraduate major
University Coterminal Requirements
Coterminal master’s degree candidates are expected to complete all master’s degree requirements as described in this bulletin. University requirements for the coterminal master’s degree are described in the “Coterminal Master’s Program” section. University requirements for the master’s degree are described in the "Graduate Degrees" section of this bulletin.
After accepting admission to this coterminal master’s degree program, students may request transfer of courses from the undergraduate to the graduate career to satisfy requirements for the master’s degree. Transfer of courses to the graduate career requires review and approval of both the undergraduate and graduate programs on a case by case basis.
In this master’s program, courses taken two quarters prior to the first graduate quarter, or later, are eligible for consideration for transfer to the graduate career. No courses taken prior to the first quarter of the sophomore year may be used to meet master’s degree requirements.
Course transfers are not possible after the bachelor’s degree has been conferred.
The University requires that the graduate advisor be assigned in the student’s first graduate quarter even though the undergraduate career may still be open. The University also requires that the Master’s Degree Program Proposal be completed by the student and approved by the department by the end of the student’s first graduate quarter.
Requirements for the Master of Science in Computational and Mathematical Engineering
The master's program consists of 45 units of course work taken at Stanford. No thesis is required; however, students may become involved in research projects during the master's program. Although there is no specific background requirement, significant exposure to mathematics and engineering course work is necessary for successful completion of the program.
There are five tracks in the master's program:
 General CME
 Computational Geosciences
 Data Science
 Imaging Science
 Mathematical and Computational Finance
General CME Track
This track is designed for students interested in studying and developing computational tools in those aspects of applied mathematics central to modeling in the physical and engineering sciences. The curriculum consists of core computational and mathematical engineering courses and programming course work, extensive breadth and depth electives, and seminars. Core courses provide instruction in mathematical and computational tools applicable to a wide range of scientific, industrial and engineering disciplines and augment breadth and depth electives of one’s choosing. The programming requirement ensures proficiency in scientific computing and professional computing skills. Seminars highlight emerging research in engineering and sciences.
Requirements
A candidate is required to complete a program of 45 units of courses numbered 200 or above. Courses below 200 level require special approval from the program office. At least 36 of these must be graded units, passed with a grade point average (GPA) of 3.0 (B) or better.
Requirement 1: Foundational (12 units)
Students must demonstrate foundational knowledge in the field by completing four of the six core courses. Courses in this area must be taken for letter grades.
Units  

CME 302  Numerical Linear Algebra  3 
CME 303  Partial Differential Equations of Applied Mathematics  3 
CME 305  Discrete Mathematics and Algorithms  3 
CME 306  Numerical Solution of Partial Differential Equations  3 
CME 307  Optimization  3 
or CME 364A  Convex Optimization I  
CME 308  Stochastic Methods in Engineering  3 
or CME 298  Basic Probability and Stochastic Processes with Engineering Applications 
Requirement 2: Programming (3 units)
To ensure that students have a strong foundation in programming, three units of advanced scientific programming for letter grade at the level of CME 212 is required. Programming proficiency at the level of CME 211 is a hard prerequisite; CME 211 can be applied towards the elective requirement.
Units  

CME 211  Software Development for Scientists and Engineers (*can only be counted as an elective)  3 
CME 212  Advanced Software Development for Scientists and Engineers  3 
Requirement 3: Breadth Electives (18 units)
18 units of general electives to demonstrate breadth of knowledge in technical areas. The elective course list represents automatically accepted electives within the program. However, electives are not limited to the list below, and the list is expanded on a continuing basis. The elective part of the ICME program is meant to be broad and inclusive of relevant courses of comparable rigor to ICME courses. It is recommended that the selected courses include offerings from (at least) two engineering departments, in addition to CME course work. Courses outside this list can be accepted as electives subject to approval by the student’s program adviser. Six units of independent research can be used to fulfill this requirement with prior approval.
Units  

Aeronautics and Astronautics  
AA 214C  Numerical Computation of Viscous Flow  3 
AA 218  Introduction to Symmetry Analysis  3 
Computational and Mathematical Engineering  
CME 215A/215B  Advanced Computational Fluid Dynamics  3 
CME 263  Introduction to Linear Dynamical Systems  3 
CME 279  Computational Biology: Structure and Organization of Biomolecules and Cells  3 
CME 342  Parallel Methods in Numerical Analysis  3 
CME 364A  Convex Optimization I  3 
CME 371  Computational Biology in Four Dimensions  3 
Computer Science  
CS 221  Artificial Intelligence: Principles and Techniques  34 
CS 228  Probabilistic Graphical Models: Principles and Techniques  34 
CS 229  Machine Learning  34 
CS 255  Introduction to Cryptography  3 
CS 261  Optimization and Algorithmic Paradigms  3 
CS 340  Topics in Computer Systems  34 
CS 348A  Computer Graphics: Geometric Modeling & Processing  34 
Electrical Engineering  
EE 223  Applied Quantum Mechanics II  3 
EE 256  Numerical Electromagnetics  3 
Management Science and Engineering  
MS&E 220  Probabilistic Analysis  34 
MS&E 221  Stochastic Modeling  3 
MS&E 223  Simulation  3 
MS&E 226  Fundamentals of Data Science: Prediction, Inference, Causality  3 
MS&E 251  Introduction to Stochastic Control with Applications  3 
MS&E 310  Linear Programming  3 
MS&E 316  Discrete Mathematics and Algorithms  3 
MS&E 321  Stochastic Systems  3 
MS&E 322  Stochastic Calculus and Control  3 
Mathematics  
MATH 136  Stochastic Processes  3 
MATH 171  Fundamental Concepts of Analysis  3 
MATH 221B  Mathematical Methods of Imaging  3 
MATH 236  Introduction to Stochastic Differential Equations  3 
MATH 238  Mathematical Finance  3 
Mechanical Engineering  
ME 335A/335B/335C  Finite Element Analysis  3 
ME 346B  Introduction to Molecular Simulations  3 
ME 408  Spectral Methods in Computational Physics  3 
ME 469  Computational Methods in Fluid Mechanics  3 
Statistics  
STATS 208  Bootstrap, CrossValidation, and Sample Reuse  3 
STATS 217  Introduction to Stochastic Processes I  3 
STATS 219  Stochastic Processes  3 
STATS 250  Mathematical Finance  3 
STATS 305A  Applied Statistics I  3 
STATS 310A/310B/310C  Theory of Probability I  3 
STATS 362  Topic: Monte Carlo  3 
Other  
CEE 281  Mechanics and Finite Elements  3 
CEE 362G  Imaging with Incomplete Information  34 
ECON 293  Machine Learning and Causal Inference  3 
ENGR 209A  Analysis and Control of Nonlinear Systems  3 
Requirement 4: Specialized Electives (9 units)
Nine units of focused graduate application electives approved by the program adviser, in the areas of engineering, mathematics, physical, biological, information, and other quantitative sciences. These courses should be foundational depth courses relevant to the student's professional development and research interests.
Requirement 5: Seminar (3 units)
One seminar unit must come from CME 500; two units are up to the student's choice of ICME graduate seminars or other approved seminars. Additional seminar units may not be counted towards the 45unit requirement.
Computational Geosciences Track
The Computational Geosciences (CompGeo) track is designed for students interested in the skills and knowledge required to develop efficient and robust numerical solutions to Earth Science problems using highperformance computing. The CompGeo curriculum is based on four fundamental areas: modern programming methods for Science and Engineering, applied mathematics with an emphasis on numerical methods, algorithms and architectures for highperformance computing and computationally oriented Earth Sciences courses. Earth Sciences/computational project courses give practice in applying methodologies and concepts. CompGeo students are required to complete general and focused application electives (Requirements 3 and 4) from the approved list of courses from the Computational Geosciences program. All other requirements remain the same as set forth above.
Note: Students interested in pursuing the ICME M.S. in the Computational Geosciences (CompGeo) track are encouraged to contact the Computational Geosciences program director before applying.
Students are required to take 45 units of course work, and research credits to earn a master's degree in Computational Geosciences track. The course work follows the requirements of the ICME M.S. degree as above with additional restrictions placed on the general and focused electives.
Requirement 1: Foundational (12 units)
Identical to the general CME master’s track requirement; see above.
Requirement 2: Programming (3 units)
To ensure that students have a strong foundation in programming, three units of advanced scientific programming for letter grade at the level of CME 212 is required. Programming proficiency at the level of CME 211 is a hard prerequisite; CME 211 can be applied towards the elective requirement.
Units  

CME 211  Software Development for Scientists and Engineers (*can only be used as an elective)  3 
CME 212  Advanced Software Development for Scientists and Engineers  3 
GEOPHYS 257  Introduction to Computational Earth Sciences  24 
Requirement 3: Breadth Electives in Geosciences (18 units)
18 units of general electives to demonstrate breadth of knowledge in technical area. Courses are currently offered but are not limited to the following specific areas of the School of Earth Sciences:
 Reservoir Simulation
 Geophysical Imaging
 Tectonophysics/Geomechanics
 Climate/Atmosphere/Ocean
 Ecology/Geobiology.
The Earth Science courses, offered in EESS, ERE, GES, and Geophysics, are selected based on the area of the student's interest and their research/thesis work, along with the advice and consent of the student's adviser. Students are encouraged to choose a range of courses in order to guarantee breadth of knowledge in Earth Sciences. A maximum of one noncomputationallyoriented course can be counted towards the master’s degree requirements. Following is a list of recommended courses (grouped by area) that can be taken to fulfill the Geosciences course requirement.
Units  

Environmental/Climate/Hydrogeology  
ESS 220  Physical Hydrogeology  4 
ESS 221  Contaminant Hydrogeology and Reactive Transport  3 
ESS 246B  Atmosphere, Ocean, and Climate Dynamics: the Ocean Circulation  3 
CEE 262A  Hydrodynamics  34 
CEE 262B  Transport and Mixing in Surface Water Flows  34 
CEE 262C  Coastal Ocean Modeling  3 
CEE 263A  Air Pollution Modeling  34 
CEE 361  Turbulence Modeling for Environmental Fluid Mechanics  24 
Geophysical Imaging  
EE 256  Numerical Electromagnetics  3 
GEOPHYS 210  Basic Earth Imaging  23 
GEOPHYS 211  Environmental Soundings Image Estimation  3 
GEOPHYS 280  3D Seismic Imaging  23 
GEOPHYS 287  Earthquake Seismology  35 
General Computational/Mathematical Geoscineces  
CEE 362G  Imaging with Incomplete Information  34 
CHEM 275  Advanced Physical Chemistry  Single Molecules and Light  3 
CME 372  Applied Fourier Analysis and Elements of Modern Signal Processing  3 
CME 321B  Mathematical Methods of Imaging  3 
ESS 211  Fundamentals of Modeling  35 
ENERGY 291  Optimization of Energy Systems  34 
ME 335A  Finite Element Analysis  3 
ME 346B  Introduction to Molecular Simulations  3 
ME 361  Turbulence  3 
ME 469  Computational Methods in Fluid Mechanics  3 
Reservoir Simulation/Fluid Flow  
ENERGY 223  Reservoir Simulation  34 
ENERGY 224  Advanced Reservoir Simulation  3 
Subsurface/Reservoir Characterization  
ENERGY 241  Seismic Reservoir Characterization  34 
GEOPHYS 202  Reservoir Geomechanics  3 
GEOPHYS 260  Rock Physics for Reservoir Characterization  3 
Structural/Tectonophysics/Geomechanics  
GEOPHYS 220  Ice, Water, Fire  35 
GEOPHYS 288A  Crustal Deformation  35 
GEOPHYS 288B  Crustal Deformation  35 
GEOPHYS 290  Tectonophysics  3 
Requirement 4: Practical Component (9 units)
9 units of focused research in computational geosciences. Students are required to either complete a Research Project or an Internship as described below.
Units  

Internship and/or Research Project, enrolling in a course such as:  
EARTH 400  Directed Research  3 
EARTH 401  Curricular Practical Training  1 
Research Project
Students who plan to apply to the Ph.D. program need to take 9 units of research. Students will work with the CompGeo program director to find an appropriate adviser and research topic and then enroll in EARTH 400 Directed Research (or a similar SES research course). The successful outcome of a Research Project can be:
 an oral presentation at an international meeting requiring an extended abstract
 a publication submission in a peer reviewed journal.
 a written report
Internship
As an alternative to the Research Project, students have the option of an internship which is recommended for those students interested in a terminal degree. The individual student is responsible for securing and organizing the internship and is required to obtain a faculty adviser and submit a written report on the internship project. Credit for the internship will be obtained through EARTHSCI 401: Curricular Practical Training (1 unit) and in this case only 8 units of research are required.
Requirement 5: Seminar (3 units)
Three units of ICME graduate seminars or other approved seminars. Additional seminar units may not be counted towards the 45unit requirement. One of the required seminars for CompGeo must be a seminar course chosen in concert with the student's academic adviser among the seminars offered by the the School of Earth, Energy and Environmental Sciences.
Data Science Track
The Data Science track develops strong mathematical, statistical, computational and programming skills through the foundational and programming requirements. In addition, it provides a fundamental data science education through general and focused electives requirement from courses in data sciences and related areas. DS track covers both computational data science and machine learning but can be tailored to be more focused on one of the two areas by taking more credits in that concentration (requirement 3 or 4). Course choices are limited to predefined courses from the data sciences and related courses group for requirements 15.
Requirement 1: Mathematical and Statistical Foundations (15 units)
Students must demonstrate foundational knowledge in the field by completing the following courses. Courses in this area must be taken for letter grades.
Units  

CME 302  Numerical Linear Algebra  3 
CME 308  Stochastic Methods in Engineering  3 
STATS 200  Introduction to Statistical Inference  3 
or STATS 300A  Theory of Statistics I  
STATS 203  Introduction to Regression Models and Analysis of Variance  3 
or STATS 305A  Applied Statistics I  
STATS 315A  Modern Applied Statistics: Learning  3 
or CS/STATS 229  Machine Learning 
Requirement 2: Experimentation (3 units)
Experimental method and causal considerations are fundamental to data science. The course chosen from this area must be taken for letter grades.
STATS 263  Design of Experiments  3 
ECON 271  Intermediate Econometrics II (3 units only)  25 
or MS&E 327  Topics in Causal Inference 
*If both courses are taken, the additional 3 units can count towards the “Machine Learning Methods and Applications” requirement below.
Requirement 3: Scientific Computing (612 units)
To ensure that students have a strong foundation in programming, 3 units of scientific software development (CME212) and 3 units from scientific computing foundations and methods for letter grades is required. CME offers a placement test that can be used to directly enroll in CME 212. Students who pass this placement test are not required to take CME 211. Students can choose to take up to six additional units from this group of courses.
*Students must take 6 units from Requirement 3 and 6 units from Requirement 4, with an additional 6 units from either Requirement 3 or 4, for a total of 18 units in the two areas. The additional 6 units may be taken for a nonletter grade.
Units  

Software Development; take 3 units  
CME 211  Software Development for Scientists and Engineers  3 
CME 212  Advanced Software Development for Scientists and Engineers  3 
Scientific Computing Foundations and Methods; take 3 units  
CME 213  Introduction to parallel computing using MPI, openMP, and CUDA (Scientific Computing Foundations and Methods; take 3 units)  3 
CME 305  Discrete Mathematics and Algorithms  3 
CME 307  Optimization  3 
CME 323  Distributed Algorithms and Optimization  3 
CME 364A  Convex Optimization I  3 
CS 246  Mining Massive Data Sets  34 
Requirement 4: Machine Learning Methods and Applications (612 units)
Six units of coursework from this area is required and should be taken for letter grades. Students can also choose to take up to six additional units from this group of courses.
*Students must take 6 units from Requirement 3 and 6 units from Requirement 4, with an additional 6 units from either Requirement 3 or 4, for a total of 18 units in the two areas. The additional 6 units may be taken for a nonletter grade.
Courses in this area must be taken for letter grades.
STATS 231  
STATS 315B  Modern Applied Statistics: Data Mining  3 
CS 221  Artificial Intelligence: Principles and Techniques  34 
CS 224N  Natural Language Processing with Deep Learning  34 
CS 230  Deep Learning  34 
CS 231N  Convolutional Neural Networks for Visual Recognition  34 
CS 234  Reinforcement Learning  3 
CS 236  Deep Generative Models  3 
Requirement 5: Practical component (3 units)
Students are required to take 3 units of practical component that may include any combination of:

Analytics Accelerator(CME 217)

Master's Research(CME 291): a research project, supervised by a faculty member and approved by the adviser; should be taken for letter grade only. The research project should be computational in nature. Students should submit a onepage proposal, supported by the faculty member, to ICME student services for approval at least one quarter before.

Other courses that have a strong handson and practical component, such as STATS 390 Consulting Workshop up to 1unit.
Additional Units
Students must take 6 units of additional electives from graduatelevel engineering and science courses (a maximum of 3units of research including practical component or seminar) for a total of 45 units to earn the degree.
Imaging Science Track
The Imaging Science track is designed for students interested in the skills and knowledge required to develop efficient and robust computational tools for imaging science. The curriculum is based on four fundamental areas: mathematical models and analysis for imaging sciences and inverse problems, tools and techniques from modern imaging sciences from medicine, biology, physics/chemistry, and earth science, algorithms in numerical methods and scientific computing and high performance computing skills and architecture oriented towards imaging sciences.
The course work follows the requirements of the general master's degree in the core course requirement. The general and focused elective requirements (requirements 3 and 4 below) are limited to approved courses listed below. Programming requirement (requirement 2) is extended to 6 units and includes course work in advanced scientific programming and high performance computing.
Requirement 1: Foundational (12 units)
Identical to the general ICME master’s program; see above.
Requirement 2: Programming (6 units)
To ensure that students have a strong foundation in programming, three units of advanced scientific programming for letter grade at the level of CME 212 and three units of parallel computing for letter grade are required. Programming proficiency at the level of CME 211 is a hard prerequisite for CME 212; CME 211 can be applied towards the elective requirement.
Units  

CME 211  Software Development for Scientists and Engineers (*can only be used as an elective)  3 
Advanced Scientific Programming; take 3 units  
CME 212  Advanced Software Development for Scientists and Engineers  3 
CME 214  Software Design in Modern Fortran for Scientists and Engineers  3 
Parallel /HPCComputing; take 3 units  
CME 213  Introduction to parallel computing using MPI, openMP, and CUDA  3 
CME 323  Distributed Algorithms and Optimization  3 
CME 342  Parallel Methods in Numerical Analysis  3 
GEOPHYS 257  Introduction to Computational Earth Sciences  24 
Requirement 3: Imaging Sciences electives (18 units)
Imaging Sciences electives should demonstrate breadth of knowledge in the technical area. The elective course list is defined. Courses outside this list can be accepted as electives subject to approval by the student’s program adviser. Six units of independent research can be used to fulfill this requirement with prior approval.
Units  

Take 18 units of the following:  
APPPHYS 232  Advanced Imaging Lab in Biophysics  4 
BIOE 220  Introduction to Imaging and Imagebased Human Anatomy  3 
CEE 362G  Imaging with Incomplete Information  34 
CME 279  Computational Biology: Structure and Organization of Biomolecules and Cells  3 
CME 371  Computational Biology in Four Dimensions  3 
CS 231N  Convolutional Neural Networks for Visual Recognition  34 
CS 237A  Principles of Robot Autonomy I  34 
EARTHSYS 242  Remote Sensing of Land  4 
EE 236A  Modern Optics  3 
EE 262  ThreeDimensional Imaging  3 
EE 355  Imaging Radar and Applications  3 
EE 367  Computational Imaging and Display  3 
EE 368  Digital Image Processing  3 
EE 369A  Medical Imaging Systems I  3 
EE 369B  Medical Imaging Systems II  3 
EE 369C  Medical Image Reconstruction  3 
GEOPHYS 210  Basic Earth Imaging  23 
GEOPHYS 211  Environmental Soundings Image Estimation  3 
GEOPHYS 280  3D Seismic Imaging  23 
MATH 221B  Mathematical Methods of Imaging  3 
MATH 262  Applied Fourier Analysis and Elements of Modern Signal Processing  3 
PSYCH 204A  Human Neuroimaging Methods  3 
Requirement 4: Specialized electives (6 units)
6 units of focused graduate application electives, approved by the ICME graduate adviser, in the areas of engineering, mathematics, physical, biological, information, and other quantitative sciences. These courses should be foundational depth courses relevant to the student's professional development and research interests.
Requirement 5: Seminar (3 units)
One seminar unit must come from CME 500; two units are up to the student's choice of ICME graduate seminars or other approved seminars. Additional seminar units may not be counted towards the 45unit requirement.
Mathematical and Computational Finance Track
The Mathematical & Computational Finance (MCF) track is an interdisciplinary program that provides education in applied and computational mathematics, statistics, and financial applications for individuals with strong mathematical skills. Upon successful completion of the MCF track in the ICME master's program, students will be prepared to assume positions in the financial industry as data and information scientists, quantitative strategists, risk managers, regulators, financial technologists, or to continue on to advanced graduate work in applied mathematics, statistics, finance, and other disciplines.
The Institute for Computational and Mathematical Engineering, in close cooperation with Mathematics, Management Science and Engineering and Statistics provides many of the basic courses.
Requirement 1: Foundational (9 units)
Students must demonstrate foundational knowledge in the field by completing the following core courses. Courses in this area must be taken for letter grades.
Units  

CME 302  Numerical Linear Algebra  3 
or CME 303  Partial Differential Equations of Applied Mathematics  
or CME 305  Discrete Mathematics and Algorithms  
CME 307  Optimization  3 
or CME 364A  Convex Optimization I  
CME 308  Stochastic Methods in Engineering  3 
or MATH 236  Introduction to Stochastic Differential Equations 
Requirement 2: Programming (69 units)
To ensure that students have a strong foundation in programming, six units of advanced programming for letter grade at the level of CME 212 and three units of parallel computing for letter grade are required. Programming proficiency at the level of CME 211 is a hard prerequisite for CME 212.
Units  

Advanced Scientific Programming; take 36 units  
CME 211  Software Development for Scientists and Engineers  3 
CME 212  Advanced Software Development for Scientists and Engineers  3 
CME 214  Software Design in Modern Fortran for Scientists and Engineers  3 
Parallel/HPC Computing; take 3 units  
CME 213  Introduction to parallel computing using MPI, openMP, and CUDA  3 
CME 323  Distributed Algorithms and Optimization  3 
CME 342  Parallel Methods in Numerical Analysis  3 
CS 149  Parallel Computing  34 
CS 315B  Parallel Computing Research Project  3 
CS 316  Advanced MultiCore Systems  3 
Requirement 3: Finance electives (9 units)
Choose three courses from the following list. Courses outside this list can be accepted as electives subject to approval by the student’s program adviser.
Units  

Financial Mathematics  
MATH 238  Mathematical Finance  3 
Financial Markets  
FINANCE 320  Debt Markets  3 
FINANCE 620  Financial Markets I  3 
FINANCE 622  Dynamic Asset Pricing Theory  4 
Other  
CS 251  Cryptocurrencies and blockchain technologies  3 
MS&E 245B  Advanced Investment Science  3 
MS&E 347  Credit Risk: Modeling and Management  3 
MS&E 348  Optimization of Uncertainty and Applications in Finance  3 
MS&E 349  Financial Statistics  3 
STATS 240  Statistical Methods in Finance  3 
STATS 241  Datadriven Financial Econometrics  3 
STATS 244  Quantitative Trading: Algorithms, Data, and Optimization  24 
Requirement 4: Data Science electives (12 units)
Data Science electives should demonstrate breadth of knowledge in the technical area. Courses outside this list can be accepted as electives subject to approval by the student’s program adviser.
Units  

Statistical Modeling  
STATS 200  Introduction to Statistical Inference  3 
STATS 203  Introduction to Regression Models and Analysis of Variance  3 
STATS 205  Introduction to Nonparametric Statistics  3 
STATS 206  Applied Multivariate Analysis  3 
STATS 207  Introduction to Time Series Analysis  3 
STATS 270  A Course in Bayesian Statistics  3 
STATS 285  Massive Computational Experiments, Painlessly  2 
STATS 290  Computing for Data Science  3 
STATS 305A  Applied Statistics I  3 
STATS 305B  Applied Statistics II: Generalized Linear Models, Survival Analysis, and Exponential Families  3 
STATS 305C  Applied Statistics III  3 
STATS 361  Causal Inference  3 
Learning  
CME 241  Reinforcement Learning for Stochastic Control Problems in Finance  3 
CS 224N  Natural Language Processing with Deep Learning  34 
CS 230  Deep Learning  34 
CS 246  Mining Massive Data Sets  34 
EE 277  Reinforcement Learning: Behaviors and Applications  3 
MS&E 338  Reinforcement Learning: Frontiers  3 
STATS 315A  Modern Applied Statistics: Learning  3 
STATS 315B  Modern Applied Statistics: Data Mining  3 
Other  
MS&E 349  Financial Statistics  3 
STATS 240  Statistical Methods in Finance  3 
STATS 241  Datadriven Financial Econometrics  3 
Requirement 5: Practical component (6 units)
Students are required to take six units of practical and project courses ONLY from the courses listed below.
Units  

CS 349F  Technology for Financial Systems  1 
CME 241  Reinforcement Learning for Stochastic Control Problems in Finance  3 
CME 291  Master's Research  16 
MS&E 246  Financial Risk Analytics  3 
MS&E 448  Big Financial Data and Algorithmic Trading  3 
Petition Process for Transfer from M.S. to Ph.D. Degree Program
Students admitted to ICME graduate programs are enrolled specifically either into the terminal M.S. or the Ph.D. program. Admission to the Ph.D. program is required for a student to be eligible to work towards the Ph.D. degree.
A student in the terminal M.S. program may petition to be admitted to the Ph.D. program by filing an M.S. to Ph.D. petition form. Petition must include (1) a onepage statement of purpose explaining why the student wishes to transfer to the Ph.D. program, (2) the most recent unofficial transcript, and (3) two letters of recommendation from members of the Stanford faculty, including one from the student’s potential research adviser and at least one from an ICME faculty member belonging to the Academic Council. The M.S. to Ph.D. petition to transfer must be submitted to the student services office before the end of the spring quarter of the first year in the M.S. program.
Students who wish to submit a petition to add the Ph.D. degree, should plan to complete 18 units of the ICME core classes (CME 302, 303, 305, 306, 307, 308) for letter grade and pass the ICME qualifying exam before the beginning of their second year. If the petition is approved, all the other requirements of the Ph.D. program described in the bulletin apply, i.e. filing for candidacy, securing a PhD advisor, satisfactory degree progress and degree completion.
Transferring to the Ph.D. program is a competitive process and only highly qualified M.S. students may be admitted. Student’s original application to the graduate program as well as the materials provided for the transfer petition are reviewed. Students must adhere to requirements for the terminal M.S. degree, and plan to confer the M.S. degree in the event that the Ph.D. petition to transfer is not approved.
M.S. to Ph.D. option requirements:
 Have a cumulative GPA of 3.5 or higher.
 Earn B+ plus or higher grade on all six core courses in the first year.
 Pass all six topics of the qualifying exam before the beginning of the second year.
 Complete a minimum of six units of research rotations in years one and two. CME 291 can be taken for three units at a time for credit/no credit.
 Identify and align with a doctoral dissertation adviser before the end of winter quarter of second year who will act as research supervisor and provide funding through the completion of the program.
 Submit a petition to the ICME Ph.D. admissions committee before the end of winter quarter of second year; transfer to the Ph.D. program subject to committee approval.
Doctor of Philosophy in Computational and Mathematical Engineering
The University’s basic requirements for the Ph.D. degree are outlined in the "Graduate Degrees" section of this bulletin.
Applications to the Ph.D. program and all required supporting documents must be received by December 1, 2020. See Graduate Admissions for information and application materials. See the institute's admissions site for additional details. Applicants should take the Graduate Record Examination by October of the academic year in which the application is submitted.
ICME offers direct admission to the Ph.D. program. Admission does not imply that the student is a candidate for the Ph.D. degree. Advancement to candidacy requires superior academic achievement, satisfactory performance on the qualifying exam, and sponsorship by a faculty member.
The requirements seek to balance research activities and coursework.
Requirements
 Filing for candidacy (before the end of the second year):
 Complete 18 units of the ICME core classes (CME 302, CME 303, CME 305, CME 306, CME 307, CME 308) for letter grade and pass the ICME qualifying exam before the beginning of the second year.
 Complete three units of the programming class (CME 212); programming proficiency at the level of CME 211 is a hard prerequisite. Students can place out of CME 211. These classes should be taken for letter grade.
 Maintain a grade point average of 3.5 or higher.
 Complete a minimum of six units of research rotations in years one and two (can be with same faculty adviser). CME 400 can be taken for three units at a time for credit/no credit.
 Complete three units of seminars: one unit must come from CME 300.
 Submit the Ph.D. candidacy form: University policy requires that all doctoral students declare candidacy by the end of the sixth quarter in residence, excluding summers. However, after completing the integrated first year coursework, passing qualifying exam, and aligning with a permanent adviser, a student is eligible to file for candidacy prior to the sixth quarter. The candidacy form serves as a "contract" between the department and the student. Candidacy expires five years from the date of submission of the candidacy form, rounded to the end of the quarter. In special cases, the department may extend a student's candidacy, but is under no obligation to do so.
 Progress toward the degree:
 Complete nine units of specialized depth electives – to be agreed on with the graduate research adviser. These are intended to provide foundational knowledge of the selected research field and exposure to relevant applications. The specialized depth component of the ICME program is meant to be broad and inclusive of relevant courses of comparable rigor to ICME core courses.
 Complete three units of advanced programming classes (CME 213, CME 323, CS 315B, etc.).
 Complete nine units of computational breadth electives – advanced graduate level courses with computational content.
 Complete at least 60 units of thesis research (CME 400).
 File the dissertation Reading Committee Form and a succinct research proposal (approved by your adviser) by the end of the third year in the program
 Organize a “Green Light” meeting with the committee members no less than six months prior to the expected defense. This meeting should be completed in the autumn quarter of the fifth year in the program or six months before scheduling oral exams if program is expected to be completed earlier. In this meeting, a final dissertation proposal will be reviewed and discussed, and the student will present a "draft Ph.D. thesis outline" indicating status of prior work and plans for additional work. The presentation should not be a "practice thesis defense presentation", but rather should be a chapterbychapter review of the status of completion of each part of the expected Ph.D. thesis. A monthbymonth schedule for the time remaining until the Ph.D. Defense should be presented at this meeting. The purpose of this Green Light meeting is to make sure that the entire reading committee is familiar with the plans for the completed Ph.D. thesis, and is comfortable with the proposed content and the schedule.
 Degree Completion:
a. Complete a minimum of 135 units of residency at Stanford.
b. The student must pass a University oral examination in the form of a defense of the dissertation. This is typically held after all or a substantial portion of the dissertation research has been completed.
c. The student is expected to demonstrate the ability to present scholarly material orally in the dissertation defense.
Some Additional details:
 ICME Qualifying Exam: exams involving material covered in the core courses are held in June and September. Students need to pass all six exams and each exam can be attempted twice prior to the beginning of the second year in the program.
 ICME Research Rotations: research rotations must be arranged by each student on a topic of their interest; the objective is to secure commitment from a faculty member to become the Ph.D. research adviser. ICME will gather information on potential research topics and faculty with open positions by the beginning of the academic year. The CME 300 seminars will be organized to introduce research opportunities, faculty members and current ICME Ph.D. students. Furthermore, contact information of prior ICME students and faculty advisers will be made available.
 ICME Research Presentations: a oneday research forum will be organized in the fall quarter for the students to present the research outcomes of the rotations to faculty and students. Presentation at the forum is a requirement to file for candidacy.
 Mentoring and Monitoring: incoming Ph.D. students are assigned an academic adviser from among the ICME affiliated faculty who can provide help and advice and act as a point of contact for general inquires. The ICME Director and the student services office are also available for consultation. Students enrolled in the Ph.D. program are considered to be in good standing if they have submitted the candidacy form before the end of the second year at Stanford. After that, academic progress towards the degree is routinely overseen by the research adviser. Every year, over the summer, the ICME Director reviews all students' progress with regard to units, course work and research progress. All research advisers are solicited for their evaluation. Each student receives a program progress report based on these sources of information.
 Master's in ICME: This program does not automatically satisfy the requirement for the Master's degree in ICME. However, ICME Ph.D. students may choose to obtain a Master's degree in addition to their Ph.D. by fulfilling the Master's course requirements as described in the Bulletin.
Specialized Elective List
See requirement 2a above.
Units  

CEE 362G  Imaging with Incomplete Information  34 
CME 279  Computational Biology: Structure and Organization of Biomolecules and Cells  3 
CME 364B  Convex Optimization II  3 
CME 371  Computational Biology in Four Dimensions  3 
CS 348A  Computer Graphics: Geometric Modeling & Processing  34 
EE 368  Digital Image Processing  3 
MATH 205A  Real Analysis  3 
MATH 215A  Algebraic Topology  3 
MATH 221A  Mathematical Methods of Imaging  3 
MATH 221B  Mathematical Methods of Imaging  3 
MATH 227  Partial Differential Equations and Diffusion Processes  3 
MATH 236  Introduction to Stochastic Differential Equations  3 
MATH 238  Mathematical Finance  3 
ME 335A/335B/335C  Finite Element Analysis  3 
ME 346B  Introduction to Molecular Simulations  3 
ME 351A/351B  Fluid Mechanics  3 
ME 361  Turbulence  3 
ME 408  Spectral Methods in Computational Physics  3 
ME 469  Computational Methods in Fluid Mechanics  3 
MS&E 319  Approximation Algorithms  3 
STATS 305A  Applied Statistics I  3 
STATS 305B  Applied Statistics II: Generalized Linear Models, Survival Analysis, and Exponential Families  3 
STATS 305C  Applied Statistics III  3 
STATS 318  Modern Markov Chains  3 
STATS 366  Modern Statistics for Modern Biology  3 
Ph.D. Minor in Computational and Mathematical Engineering
For a minor in Computational and Mathematical Engineering (CME), a doctoral candidate must complete 21 units of approved graduate level courses. These should include three ICME core courses and three ICME graduate electives at the 300 level or above and a programming course at the level of CME 212 or higher. All courses must be taken for a letter grade and passed with a grade of ‘B’ or better. Elective courses cannot be cross listed with the student's primary department. Minor programs should be developed in close discussion between the student and the student's primary Ph.D. adviser.
COVID19 Policies
On July 30, the Academic Senate adopted grading policies effective for all undergraduate and graduate programs, excepting the professional Graduate School of Business, School of Law, and the School of Medicine M.D. Program. For a complete list of those and other academic policies relating to the pandemic, see the "COVID19 and Academic Continuity" section of this bulletin.
The Senate decided that all undergraduate and graduate courses offered for a letter grade must also offer students the option of taking the course for a “credit” or “no credit” grade and recommended that deans, departments, and programs consider adopting local policies to count courses taken for a “credit” or “satisfactory” grade toward the fulfillment of degreeprogram requirements and/or alter program requirements as appropriate.
Graduate Degree Requirements
Grading
The Institute for Computational and Mathematical Engineering counts all courses taken in academic year 202021 with a grade of 'CR' (credit) or 'S' (satisfactory), which are normally offered for a letter grade, towards satisfaction of graduate degree requirements that otherwise require a letter grade.
Other Graduate Policies
ICME encourages students planning to take Ph.D. qualifying exams to take all core courses for a letter grade. Graduate students should carefully consider their options before taking a large number of major courses with a CR/NC grading option as this may impact employment opportunities, fellowship applications, or further graduate school admissions. Students are encouraged to contact their program adviser or the ICME Student Services Office for additional assistance regarding grading options for the 202021 academic year.
Master's Student Advising
The Institute for Computational and Mathematical Engineering (ICME) is committed to providing academic advising in support of our master's students’ education and professional development. When most effective, this advising relationship entails collaborative engagement by both the adviser and the advisee. As a best practice, advising expectations should be discussed and reviewed to ensure mutual understanding. Both the adviser and the advisee are expected to maintain professionalism and integrity.
At the start of graduate study, each student is assigned a master’s program adviser, a member of our faculty who will provide guidance in course selection, exploring academic opportunities, and professional pathways. Typically, the same faculty member serves as program adviser for the duration of a master’s study. Advisers are assigned during New Student Orientation at the beginning of autumn quarter. The first meeting between the program adviser and student should occur in the first quarter of the first year to discuss the student’s goals and objectives. Students are expected to initiate the meeting with the adviser and complete the Master’s Degree Program Proposal before the final study list deadline of the first quarter in the program. Subsequent meetings with the adviser are strongly encouraged as need arises. Students are required to get approval from advisers for changes to the course plan on file before the changed courses are taken.
In addition, the Director of ICME meets all the new master’s students during the ICME New Student Orientation at the start of the first year and is available during the academic year by email and during office hours. The Director also schedules open advising meetings every quarter. In addition to the individual advisers, ICME also provides scholarly and professional development opportunities that address skills relevant to both industrial and academic careers.
ICME also conducts an annual review of all students’ progress. The Director, in conjunction with ICME Student Services, may initiate a meeting with any student deemed to be in academic distress.
The ICME Student Services team is also an important part of the master’s advising team. They inform students and advisers about the University and department requirements, procedures, opportunities, and maintain the official records of adviser assignments and course approvals.
Finally, graduate students are active contributors to the advising relationship and we urge them to proactively seek academic and professional guidance and take responsibility for informing themselves about policies and degree requirements for their graduate program. We therefore expect students to read regular communications from the Registrar's office and ICME Student Services regarding upcoming academic deadlines and policy updates, and to be responsible for complying with the University and program requirements.
A statement of the University policy on graduate advising is posted under "Graduate Advising" section of this Bulletin.
Ph.D. Student Advising
ICME is committed to providing academic advising in support of our Ph.D. students’ education and professional development. When most effective, this advising relationship entails collaborative engagement by both the adviser and the advisee. As a best practice, advising expectations should be discussed and reviewed to ensure mutual understanding. Both the adviser and the advisee are expected to maintain professionalism and integrity.
The program adviser initially guides students in key areas such as course selection, navigating policies and degree requirements, developing of teaching pedagogy, identifying doctoral research opportunities and exploring academic opportunities and professional pathways. The Director of ICME serves as the program adviser for all incoming Ph.D. students. The program adviser meets with all the doctoral students during the New Student Orientation at the start of the first year and is available during the academic year by email and during office hours. The program adviser or research adviser/CoAdviser in conjunction with ICME Student Services may initiate a meeting with any student deemed to be in academic or research distress.
In addition to the individual advisers, ICME also provides scholarly and professional development opportunities, including a teaching training program and workshops that address skills relevant to both industrial and academic careers.
Students are required to declare candidacy with a doctoral research adviser by the end of their second year in the program. ICME students can align with faculty across the University who are well versed in supervising research, mentoring doctoral students, and providing funding for the duration of the program. This research supervisor supersedes the program adviser in assuming primary responsibility for advising and mentoring the student. When the research adviser is from outside our department, the student will also identify a doctoral research CoAdviser from ICME affiliated faculty to provide guidance on departmental requirements, core coursework, and opportunities. We encourage students to decide on their thesis committee within one year after start of candidacy in order to avail themselves of advice from multiple faculty members on the reading committee.
ICME also conducts an annual review of all students’ progress on milestones and research. Research input is solicited and an individual progress report spelling out the forthcoming milestones and any remedial action needed to maintain status is compiled.
The ICME Student Services team is also an important part of the doctoral advising team. They inform students and advisers about the University and department requirements, procedures, opportunities, and they maintain the official records of adviser assignments and course approvals. Students are encouraged to talk with the program adviser and the Student Services office as they consider courses.
Finally, our doctoral students are active contributors to the advising relationship and we urge them to proactively seek academic and professional guidance and take responsibility for informing themselves of policies and degree requirements for their graduate program. We therefore expect students to read regular communications from the Registrar's office and ICME Student Services regarding upcoming academic deadlines and policy updates, and to be responsible for complying with the University and program requirements.
Emeriti: (Professors) Gunnar Carlsson (Mathematics), Jerry Harris (Geophysics), Antony Jameson (Aeronautics and Astronautics), Walter Murray (Management Science and Engineering), Arogyaswami Paulraj (Electrical Engineering), Peter Pinsky ( Mechanical Engineering), Michael Saunders (Management Science and Engineering)
Director: Gianluca Iaccarino (Mechanical Engineering)
Director of Graduate Studies: Eric Darve (Mechanical Engineering)
Professors: Juan Alonso (Aeronautics and Astronautics), Biondo Biondi (Geophysics), Stephen Boyd (Electrical Engineering), Carlos D. Bustamante (Biomedical Data Science, Genetics), Emmanuel Candes (Mathematics, Statistics), Eric Darve (Mechanical Engineering), Persi Diaconis (Mathematics, Statistics), David Donoho (Statistics), Charbel Farhat (Aeronautics and Astronautics, Mechanical Engineering), Ronald Fedkiw (Computer Science), Oliver Fringer (Civil and Environmental Engineering), Margot Gerritsen (Energy Resources Engineering), Kay Giesecke (Management Science and Engineering), Peter Glynn (Management Science and Engineering), Ashish Goel (Management Science and Engineering), Leonidas Guibas (Computer Science), Pat Hanrahan (Computer Science, Electrical Engineering), Trevor Hastie (Mathematics, Statistics), Gianluca Iaccarino (Mechanical Engineering), Doug James (Computer Science), Ramesh Johari (Management Science and Engineering), Peter Kitanidis (Civil and Environmental Engineering), Tze Leung Lai (Statistics), Sanjiva Lele (Mechanical Engineering, Aeronautics and Astronautics), Parviz Moin (Mechanical Engineering), Brad Osgood (Electrical Engineering), George Papanicolaou (Mathematics), Noah Rosenberg (Biology), Lenya Ryzhik (Mathematics), Amin Saberi (Management Science and Engineering), Eric Shaqfeh (Chemical Engineering, Mechanical Engineering), Daniel Tartakovsky (Energy Resources Engineering), Jonathan Taylor (Statistics), Hamdi Tchelepi (Energy Resources Engineering), Benjamin Van Roy (Management Science and Engineering, Electrical Engineering), Andras Vasy (Mathematics), Lawrence Wein (Graduate School of Business), Wing Wong (Statistics), Yinyu Ye (Management Science and Engineering), Lexing Ying (Mathematics, Institute for Computational and Mathematical Engineering)
Associate Professors: Ron Dror (CS, Institute for Computational and Mathematical Engineering), Eric Dunham (Geophysics), Adrian Lew (Mechanical Engineering), Ali Mani (Mechanical Engineering), Alison Marsden (Pediatrics, Bioengineering), Marco Pavone (Aeronautics and Astronautics), Andrew Spakowitz (Chemical Engineering)
Assistant Professors: Aaron Daniel Sidford (Management Science and Engineering), Jenny Suckale (Geophysics), Johan Ugander (Management Science and Engineering), Mary Wootters (Computer Science)
Senior Lecturer: Vadim Khayms
Lecturer: Hung Le, Ashwin Rao, Andreas Santucci
Academic Staff: Reza BosaghZadeh, Kari Hanson
Courses
CME 10A. Explorations in Calculus. 1 Unit.
In this course, we will explore the big ideas of calculus, through open, visual, and creative mathematics tasks. Students will be invited to think about what calculus is all about and why it matters. This course will benefit all students ¿ whether or not you have taken a calculus class. Students will work collaboratively in problem solving through a supportive community of mathematics learners. This course has three goals ¿ to give you a different mathematics experience that could reshape your relationship with mathematics, to provide you with a basis for success in future courses at Stanford, and to teach you the important ideas that pervade calculus. As a community, we will cultivate the positive ideas and mindsets that shape productive learning.
CME 100. Vector Calculus for Engineers. 5 Units.
Computation and visualization using MATLAB. Differential vector calculus: vectorvalued functions, analytic geometry in space, functions of several variables, partial derivatives, gradient, linearization, unconstrained maxima and minima, Lagrange multipliers and applications to trajectory simulation, least squares, and numerical optimization. Introduction to linear algebra: matrix operations, systems of algebraic equations with applications to coordinate transformations and equilibrium problems. Integral vector calculus: multiple integrals in Cartesian, cylindrical, and spherical coordinates, line integrals, scalar potential, surface integrals, Green's, divergence, and Stokes' theorems. Numerous examples and applications drawn from classical mechanics, fluid dynamics and electromagnetism. Prerequisites: knowledge of singlevariable calculus equivalent to the content of MATH 1921 (e.g., 5 on Calc BC, 4 on Calc BC with MATH 21, 5 on Calc AB with MATH 21). Placement diagnostic (recommendation nonbinding) at: https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext.
Same as: ENGR 154
CME 100A. Vector Calculus for Engineers, ACE. 6 Units.
Students attend CME100/ENGR154 lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Enrollment by department permission only. Prerequisite: must be enrolled in the regular CME10001 or 02. Application at: https://engineering.stanford.edu/students/programs/engineeringdiversityprograms/additionalcalculusengineers.
CME 102. Ordinary Differential Equations for Engineers. 5 Units.
Analytical and numerical methods for solving ordinary differential equations arising in engineering applications are presented. For analytical methods students learn to solve linear and nonlinear first order ODEs; linear second order ODEs; and Laplace transforms. Numerical methods using MATLAB programming tool kit are also introduced to solve various types of ODEs including: first and second order ODEs, higher order ODEs, systems of ODEs, initial and boundary value problems, finite differences, and multistep methods. This also includes accuracy and linear stability analyses of various numerical algorithms which are essential tools for the modern engineer. This class is foundational for professional careers in engineering and as a preparation for more advanced classes at the undergraduate and graduate levels. Prerequisites: knowledge of singlevariable calculus equivalent to the content of MATH 1921 (e.g., 5 on Calc BC, 4 on Calc BC with MATH 21, 5 on Calc AB with MATH 21). Placement diagnostic (recommendation nonbinding) at: https://exploredegrees.stanford.edu/undergraduatedegreesandprograms/#aptext.
Same as: ENGR 155A
CME 102A. Ordinary Differential Equations for Engineers, ACE. 6 Units.
Students attend CME102/ENGR155A lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME102) prior to submitting application at:nhttps://engineering.stanford.edu/students/programs/engineeringdiversityprograms/additionalcalculusengineers.
CME 104. Linear Algebra and Partial Differential Equations for Engineers. 5 Units.
Linear algebra: systems of algebraic equations, Gaussian elimination, undetermined and overdetermined systems, coupled systems of ordinary differential equations, LU factorization, eigensystem analysis, normal modes. Linear independence, vector spaces, subspaces and basis. Numerical analysis applied to structural equilibrium problems, electrical networks, and dynamic systems. Fourier series with applications, partial differential equations arising in science and engineering, analytical solutions of partial differential equations. Applications in heat and mass transport, mechanical vibration and acoustic waves, transmission lines, and fluid mechanics. Numerical methods for solution of partial differential equations: iterative techniques, stability and convergence, time advancement, implicit methods, von Neumann stability analysis. Examples and applications drawn from a variety of engineering fields. Prerequisite: CME102/ENGR155A.
Same as: ENGR 155B
CME 104A. Linear Algebra and Partial Differential Equations for Engineers, ACE. 6 Units.
Students attend CME104/ENGR155B lectures with additional recitation sessions; two to four hours per week, emphasizing engineering mathematical applications and collaboration methods. Prerequisite: students must be enrolled in the regular section (CME104) prior to submitting application at: https://engineering.stanford.edu/students/programs/engineeringdiversityprograms/additionalcalculusengineers.
CME 106. Introduction to Probability and Statistics for Engineers. 4 Units.
Probability: random variables, independence, and conditional probability; discrete and continuous distributions, moments, distributions of several random variables. Numerical simulation using Monte Carlo techniques. Topics in mathematical statistics: random sampling, point estimation, confidence intervals, hypothesis testing, nonparametric tests, regression and correlation analyses. Numerous applications in engineering, manufacturing, reliability and quality assurance, medicine, biology, and other fields. Prerequisite: CME100/ENGR154 or MATH 51 or 52.
Same as: ENGR 155C
CME 107. Introduction to Machine Learning. 35 Units.
Introduction to machine learning. Formulation of supervised and unsupervised learning problems. Regression and classification. Data standardization and feature engineering. Loss function selection and its effect on learning. Regularization and its role in controlling complexity. Validation and overfitting. Robustness to outliers. Simple numerical implementation. Experiments on data from a wide variety of engineering and other disciplines. Undergraduate students should enroll for 5 units, and graduate students should enroll for 3 units. Prerequisites: ENGR 108; EE 178 or CS 109; CS106A or equivalent.
Same as: EE 104
CME 108. Introduction to Scientific Computing. 3 Units.
Introduction to Scientific Computing Numerical computation for mathematical, computational, physical sciences and engineering: error analysis, floatingpoint arithmetic, nonlinear equations, numerical solution of systems of algebraic equations, banded matrices, least squares, unconstrained optimization, polynomial interpolation, numerical differentiation and integration, numerical solution of ordinary differential equations, truncation error, numerical stability for time dependent problems and stiffness. Implementation of numerical methods in MATLAB programming assignments. Prerequisites: MATH 51, 52, 53; prior programming experience (MATLAB or other language at level of CS 106A or higher).
Same as: MATH 114
CME 151A. Interactive Data Visualization in D3. 1 Unit.
This fourweek short course introduces D3, a powerful tool for creating interactive data visualizations on the web (d3js.org). The class is geared toward scientists and engineers who want to better communicate their personal projects and research through visualizations on the web. The class will cover the basics of D3: inputting data, creating scales and axes, and adding transitions and interactivity, as well as some of the most used libraries: stack, cluster and force layouts. The class will be based on short workshops and a final project. A background in programming methodology at the level of CS106A is assumed. The course will make use of Javascript, experience is recommended but not necessary.
CME 187. Mathematical Population Biology. 3 Units.
Mathematical models in population biology, in biological areas including demography, ecology, epidemiology, evolution, and genetics. Mathematical approaches include techniques in areas such as combinatorics, differential equations, dynamical systems, linear algebra, probability, and stochastic processes. Math 50 or 60 series is required, and at least two of (BIO 81, BIO 82, BIO 85) are strongly recommended.
Same as: BIO 187
CME 192. Introduction to MATLAB. 1 Unit.
This short course runs for the first four weeks/eight lectures of the quarter and is offered each quarter during the academic year. It is highly recommended for students with no prior programming experience who are expected to use MATLAB in math, science, or engineering courses. It will consist of interactive lectures and applicationbased assignments.nThe goal of the short course is to make students fluent in MATLAB and to provide familiarity with its wide array of features. The course covers an introduction of basic programming concepts, data structures, and control/flow; and an introduction to scientific computing in MATLAB, scripts, functions, visualization, simulation, efficient algorithm implementation, toolboxes, and more.
CME 193. Introduction to Scientific Python. 1 Unit.
This short course runs for the first four weeks of the quarter. It is recommended for students who are familiar with programming at least at the level of CS106A and want to translate their programming knowledge to Python with the goal of becoming proficient in the scientific computing and data science stack. Lectures will be interactive with a focus on real world applications of scientific computing. Technologies covered include Numpy, SciPy, Pandas, Scikitlearn, and others. Topics will be chosen from Linear Algebra, Optimization, Machine Learning, and Data Science. Prior knowledge of programming will be assumed, and some familiarity with Python is helpful, but not mandatory.
CME 195. Introduction to R. 1 Unit.
This short course runs for four weeks and is offered in fall and spring. It is recommended for students who want to use R in statistics, science or engineering courses, and for students who want to learn the basics of data science with R. The goal of the short course is to familiarize students with some of the most important R tools for data analysis. Lectures will focus on learning by example and assignments will be applicationdriven. No prior programming experience is assumed.
Same as: STATS 195
CME 197. HumanCentered Design Methods in Data Science. 1 Unit.
In today's society, the most pressing data science problems we face exist in a complex sociotechnical ecosystem and cannot be solved using the numbers alone. In this fiveweek short course, students will learn how to apply humancentered design methods to solve data science problems and how to pair traditional data with a diversity of other types of data to redefine problems and gain innovative insight. The course will focus on empathybased frameworks to analyze data, problem definition and redefinition, and ideation. Additional skills in critique and storytelling will also be covered. Classes will be highly interactive and teambased. This course will offer skills in support of the teams working toward the Big Earth Hackathon Wildland Fire challenge (CEE 265H, EARTH 165H, EARTH 265H).
Same as: EARTH 197
CME 200. Linear Algebra with Application to Engineering Computations. 3 Units.
Computer based solution of systems of algebraic equations obtained from engineering problems and eigensystem analysis, Gaussian elimination, effect of roundoff error, operation counts, banded matrices arising from discretization of differential equations, illconditioned matrices, matrix theory, least square solution of unsolvable systems, solution of nonlinear algebraic equations, eigenvalues and eigenvectors, similar matrices, unitary and Hermitian matrices, positive definiteness, CayleyHamilton theory and function of a matrix and iterative methods. Prerequisite: familiarity with computer programming, and MATH51.
Same as: ME 300A
CME 204. Partial Differential Equations in Engineering. 3 Units.
Geometric interpretation of partial differential equation (PDE) characteristics; solution of first order PDEs and classification of secondorder PDEs; selfsimilarity; separation of variables as applied to parabolic, hyperbolic, and elliptic PDEs; special functions; eigenfunction expansions; the method of characteristics. If time permits, Fourier integrals and transforms, Laplace transforms. Prerequisite: CME 200/ME 300A, equivalent, or consent of instructor.
Same as: ME 300B
CME 206. Introduction to Numerical Methods for Engineering. 3 Units.
Numerical methods from a user's point of view. Lagrange interpolation, splines. Integration: trapezoid, Romberg, Gauss, adaptive quadrature; numerical solution of ordinary differential equations: explicit and implicit methods, multistep methods, RungeKutta and predictorcorrector methods, boundary value problems, eigenvalue problems; systems of differential equations, stiffness. Emphasis is on analysis of numerical methods for accuracy, stability, and convergence. Introduction to numerical solutions of partial differential equations; Von Neumann stability analysis; alternating direction implicit methods and nonlinear equations. Prerequisites: CME 200/ME 300A, CME 204/ME 300B.
Same as: ME 300C
CME 209. Mathematical Modeling of Biological Systems. 3 Units.
The course covers mathematical and computational techniques needed to solve advanced problems encountered in applied bioengineering. Fundamental concepts are presented in the context of their application to biological and physiological problems including cancer, cardiovascular disease, infectious disease, and systems biology. Topics include Taylor's Series expansions, parameter estimation, regression, nonlinear equations, linear systems, optimization, numerical differentiation and integration, stochastic methods, ordinary differential equations and Fourier series. Python, Matlab and other software will be used for weekly assignments and projects.nPrerequisites: MATH 51, 52, 53; prior programming experience (Matlab or other language at level of CS 106A or higher).
Same as: BIOE 209
CME 211. Software Development for Scientists and Engineers. 3 Units.
Basic usage of the Python and C/C++ programming languages are introduced and used to solve representative computational problems from various science and engineering disciplines. Software design principles including time and space complexity analysis, data structures, objectoriented design, decomposition, encapsulation, and modularity are emphasized. Usage of campus wide Linux compute resources: login, file system navigation, editing files, compiling and linking, file transfer, etc. Versioning and revision control, software build utilities, and the LaTeX typesetting software are introduced and used to help complete programming assignments. Prerequisite: introductory programming course equivalent to CS 106A or instructor consent.
CME 212. Advanced Software Development for Scientists and Engineers. 3 Units.
Advanced topics in software development, debugging, and performance optimization are covered. The capabilities and usage of common libraries and frameworks such as BLAS, LAPACK, FFT, PETSc, and MKL/ACML are reviewed. Computer representation of integer and floating point numbers, and interoperability between C/C++ and Fortran is described. More advanced software engineering topics including: representing data in files, signals, unit and regression testing, and build automation. The use of debugging tools including static analysis, gdb, and Valgrind are introduced. An introduction to computer architecture covering processors, memory hierarchy, storage, and networking provides a foundation for understanding software performance. Profiles generated using gprof and perf are used to help guide the performance optimization process. Computational problems from various science and engineering disciplines will be used in assignments. Prerequisites: CME 200 / ME 300A and CME 211.
CME 213. Introduction to parallel computing using MPI, openMP, and CUDA. 3 Units.
This class will give handson experience with programming multicore processors, graphics processing units (GPU), and parallel computers. The focus will be on the message passing interface (MPI, parallel clusters) and the compute unified device architecture (CUDA, GPU). Topics will include multithreaded programs, GPU computing, computer cluster programming, C++ threads, OpenMP, CUDA, and MPI. Prerequisites include C++, templates, debugging, UNIX, makefile, numerical algorithms (differential equations, linear algebra).
Same as: ME 339
CME 214. Software Design in Modern Fortran for Scientists and Engineers. 3 Units.
This course introduces software design and development in modern Fortran. Course covers the functional, objectoriented, and parallel programming features introduced in the Fortran 95, 2003, and 2008 standards, respectively, in the context of numerical approximations to ordinary and partial differential equations; introduces objectoriented design and design schematics based on the Unified Modeling Language (UML) structure, behavior, and interaction diagrams; cover the basic use of several opensource tools for software building, testing, documentation generation, and revision control. Recommended: Familiarity with programming in Fortran 90, basic numerical analysis and linear algebra, or instructor approval.
Same as: EARTH 214
CME 215A. Advanced Computational Fluid Dynamics. 3 Units.
High resolution schemes for capturing shock waves and contact discontinuities; upwinding and artificial diffusion; LED and TVD concepts; alternative flow splittings; numerical shock structure. Discretization of Euler and Navier Stokes equations on unstructured meshes; the relationship between finite volume and finite element methods. Time discretization; explicit and implicit schemes; acceleration of steady state calculations; residual averaging; math grid preconditioning. Automatic design; inverse problems and aerodynamic shape optimization via adjoint methods. Pre or corequisite: 214B or equivalent.
Same as: AA 215A
CME 215B. Advanced Computational Fluid Dynamics. 3 Units.
High resolution schemes for capturing shock waves and contact discontinuities; upwinding and artificial diffusion; LED and TVD concepts; alternative flow splittings; numerical shock structure. Discretization of Euler and Navier Stokes equations on unstructured meshes; the relationship between finite volume and finite element methods. Time discretization; explicit and implicit schemes; acceleration of steady state calculations; residual averaging; math grid preconditioning. Automatic design; inverse problems and aerodynamic shape optimization via adjoint methods. Pre or corequisite: 214B or equivalent.
Same as: AA 215B
CME 216. Machine Learning for Computational Engineering.. 3 Units.
Linear and kernel support vector machines, deep learning, deep neural networks, generative adversarial networks, physicsbased machine learning, forward and reverse mode automatic differentiation, optimization algorithms for machine learning, TensorFlow, PyTorch.
Same as: ME 343
CME 217. Analytics Accelerator. 13 Unit.
This is a multidisciplinary graduate level course designed to give students handson experience working in teams through realworld projectbased research and experiential classroom activities. Students work in dynamic teams with the support of course faculty and mentors, researching preselected topics focused on COVID19 during fall 2020 with the option to continue into winter 2021. Students apply a computational and data analytics lens and will use design thinking methodology. The course exposes students to ethics, emotional intelligence, unintended consequences of their work and team building supported by relevant lectures on data science and med/bio topics. Prerequisites: none.nThe course application generally opens 56 weeks before registration for each quarter. If you missed the application for the quarter, please submit your application anyway to be added to the waitlist and to receive information regarding upcoming quarters. https://forms.gle/oLtUe7dMKGy8bb2Z9.
Same as: BIODS 217
CME 232. Introduction to Computational Mechanics. 3 Units.
Provides an introductory overview of modern computational methods for problems arising primarily in mechanics of solids and is intended for students from various engineering disciplines. The course reviews the basic theory of linear solid mechanics and introduces students to the important concept of variational forms, including the principle of minimum potential energy and the principles of virtual work. Specific model problems that will be considered include deformation of bars, beams and membranes, plates, and problems in plane elasticity (plane stress, plane strain, axisymmetric elasticity). The variational forms of these problems are used as the starting point for developing the finite element method (FEM) and boundary element method (BEM) approaches providing an important connection between mechanics and computational methods.
Same as: ME 332
CME 241. Reinforcement Learning for Stochastic Control Problems in Finance. 3 Units.
This course will explore a few problems in Mathematical Finance through the lens of Stochastic Control, such as Portfolio Management, Derivatives Pricing/Hedging and Order Execution. For each of these problems, we formulate a suitable Markov Decision Process (MDP), develop Dynamic Programming (DP) solutions, and explore Reinforcement Learning (RL) algorithms. The course emphasizes the theory of DP/RL as well as modeling the practical nuances of these finance problems, and strengthening the understanding through plenty of coding exercises of the methods. No prerequisite coursework expected, but a foundation in undergraduate Probability, basic familiarity with Finance, and Python coding skills are required. Dynamic Programming or Reinforcement Learning background not required.
Same as: MS&E 346
CME 243. Risk Analytics and Management in Finance and Insurance. 24 Units.
Market risk and credit risk, credit markets. Back testing, stress testing and Monte Carlo methods. Logistic regression, generalized linear models and generalized mixed models. Loan prepayment and default as competing risks. Survival and hazard functions, correlated default intensities, frailty and contagion. Risk surveillance, early warning and adaptive control methodologies. Banking and bank regulation, asset and liability management. Prerequisite: STATS 240 or equivalent.
Same as: STATS 243
CME 245. Topics in Mathematical and Computational Finance. 1 Unit.
Description: Current topics for enrolled students in the MCF program: This course is an introduction to computational, statistical, and optimizations methods and their application to financial markets. Class will consist of lectures and realtime problem solving. Topics: Python & R programming, interest rates, BlackScholes model, financial time series, capital asset pricing model (CAPM), options, optimization methods, and machine learning algorithms. Appropriate for anyone with a technical and solid applied math background interested in honing skills in quantitative finance. Prerequisite: basic statistics and exposure to programming.Can be repeated up to three times.
CME 249. Using Design for Effective Data Analysis. 1 Unit.
Teams of students use techniques in applied and computational mathematics to tackle problems with real world data sets. Application of design methodology adapted for data analysis will be emphasized; leverage design thinking to come up with efficient and effective data driven insights; explore design thinking methodology in small group setting.;apply design thinking to a specific data centric problem and make professional group presentation of the results. Limited enrollment. Prerequisites: CME100/102/104 or equivalents, or instructor consent. Recommended:CME106/108 and familiarity with programming at the level of CME 192/193.
CME 250. Introduction to Machine Learning. 1 Unit.
A Short course presenting the principles behind when, why, and how to apply modern machine learning algorithms. We will discuss a framework for reasoning about when to apply various machine learning techniques, emphasizing questions of overfitting/underfitting, regularization, interpretability, supervised/unsupervised methods, and handling of missing data. The principles behind various algorithmsthe why and how of using themwill be discussed, while some mathematical detail underlying the algorithmsincluding proofswill not be discussed. Unsupervised machine learning algorithms presented will include kmeans clustering, principal component analysis (PCA), and independent component analysis (ICA). Supervised machine learning algorithms presented will include support vector machines (SVM), classification and regression trees (CART), boosting, bagging, and random forests. Imputation, the lasso, and crossvalidation concepts will also be covered. The R programming language will be used for examples, though students need not have prior exposure to R. Prerequisite: undergraduatelevel linear algebra and statistics; basic programming experience (R/Matlab/Python).
CME 250A. Machine Learning on Big Data. 1 Unit.
A short course presenting the application of machine learning methods to large datasets.Topics include: brief review of the common issues of machine learning, such as, memorizing/overfitting vs learning, test/train splits, feature engineering, domain knowledge, fast/simple/dumb learners vs slow/complex/smart learners; moving your model from your laptop into a production environment using Python (scikit) or R on small data (laptop sized) at first; building math clusters using the open source H2O product to tackle Big Data, and finally to some model building on terabyte sized datasets. Prereqresites: basic knowledge of statistics, matrix algebra, and unixlike operating systems; basic file and text manipulation skills with unix tools: pipes, cut, paste, grep, awk, sed, sort, zip; programming skill at the level of CME211 or CS106A.
CME 250Q. Introduction to Quantum Computing and Quantum Algorithms. 1 Unit.
This course will cover the basic formalism of quantum states and quantum measurements, and introduce the circuit model of quantum computation. Basic results such as the SolovayKitaev theorem, nocloning theorem, quantum entanglement and Bell's inequality will be discussed followed by the quantum Fourier transform (QFT) and quantum phase estimation (QPE), and cover some of its important applications such as the celebrated Shor's algorithm for integer factorization (other applications will be mentioned but not discussed in detail), Grover's algorithm for quantum search is covered next, and lower bounds for query complexity in this context; some basic concepts of quantum error correction and quantum entropy, distance between quantum states, subadditivity and strong subadditivity of von Neumann quantum entropy will also be covered. Time permitting, we will discuss some advanced algorithms such as the HHL algorithm for matrix inversion, VQE (variational quantum eigensolver) and the QAOA algorithm for optimization. Requires programming in Python, where the goal will be to familiarize the students to available software for quantum algorithm development, existing libraries, and also run some simple programs on a real quantum computer. Prerequisites: Linear algebra at the level of CME 200 / MATH 104, basic knowledge of group theory, and programming in Python. Additionally, some knowledge of real analysis will be helpful.
CME 251. Geometric and Topological Data Analysis. 3 Units.
Mathematical and computational tools for the analysis of data with geometric content, such images, videos, 3D scans, GPS traces  as well as for other data embedded into geometric spaces. Global and local geometry descriptors allowing for various kinds of invariances. The rudiments of computational topology and persistent homology on sampled spaces. Clustering and other unsupervised techniques. Spectral methods for graph data. Linear and nonlinear dimensionality reduction techniques. Alignment, matching, and map computation between geometric data sets. Function spaces and functional maps. Networks of data sets and joint analysis for segmentation and labeling. Deep learning on irregular geometric data. Prerequisites: discrete algorithms at the level of CS161; linear algebra at the level of Math51 or CME103.
Same as: CS 233
CME 253. Introduction to GPU Computing and CUDA. 1 Unit.
Covers the fundamentals of accelerating applications with GPUs (Graphics Processing Units); GPU programming with CUDA and OpenACC, debugging, thrust/CUB, profiling, optimization, debugging, and other CUDA tools. Libraries to easily accelerate compute code will be presented and deployment on larger systems will be addressed, including multiGPU environments. Several practical examples will be detailed, including deep learning. Prerequiste: knowledge of C/C++ at the level of CME211 or CS106b.
CME 257. Advanced Topics in Scientific Computing with Julia. 1 Unit.
This course will rapidly introduce students to the Julia programming language, with the goal of giving students the knowledge and experience necessary to navigate the language and package ecosystem while using Julia for their own scientific computing needs. The course will begin with learning the basics of Julia, and then introduce students to git version control and package development. Additional topics include: common packages, parallelism, interfacing with shared object libraries, and aspects of Julia's implementation (e.g. core numerical linear algebra). Lectures will be interactive, with an emphasis on collaboration and learning by example. Prerequisites: Data structures at the level of CS106B, experience with one or more scientific computing languages (e.g. Python, Matlab, or R), and some familiarity with the Unix shell. No prior experience with Julia or git is required.
CME 262. Imaging with Incomplete Information. 34 Units.
Statistical and computational methods for inferring images from incomplete data. Bayesian inference methods are used to combine data and quantify uncertainty in the estimate. Fast linear algebra tools are used to solve problems with many pixels and many observations. Applications from several fields but mainly in earth sciences. Prerequisites: Linear algebra and probability theory.
Same as: CEE 362G
CME 263. Introduction to Linear Dynamical Systems. 3 Units.
Applied linear algebra and linear dynamical systems with applications to circuits, signal processing, communications, and control systems. Topics: leastsquares approximations of overdetermined equations, and leastnorm solutions of underdetermined equations. Symmetric matrices, matrix norm, and singularvalue decomposition. Eigenvalues, left and right eigenvectors, with dynamical interpretation. Matrix exponential, stability, and asymptotic behavior. Multiinput/multioutput systems, impulse and step matrices; convolution and transfermatrix descriptions. Control, reachability, and state transfer; observability and leastsquares state estimation. Prerequisites: Linear algebra and matrices as in ENGR 108 or MATH 104; ordinary differential equations and Laplace transforms as in EE 102B or CME 102.
Same as: EE 263
CME 279. Computational Biology: Structure and Organization of Biomolecules and Cells. 3 Units.
Computational techniques for investigating and designing the threedimensional structure and dynamics of biomolecules and cells. These computational methods play an increasingly important role in drug discovery, medicine, bioengineering, and molecular biology. Course topics include protein structure prediction, protein design, drug screening, molecular simulation, cellularlevel simulation, image analysis for microscopy, and methods for solving structures from crystallography and electron microscopy data. Prerequisites: elementary programming background (CS 106A or equivalent) and an introductory course in biology or biochemistry.
Same as: BIOE 279, BIOMEDIN 279, BIOPHYS 279, CS 279
CME 285. Computational Modeling in the Cardiovascular System. 3 Units.
This course introduces computational modeling methods for cardiovascular blood flow and physiology. Topics in this course include analytical and computational methods for solutions of flow in deformable vessels, onedimensional equations of blood flow, cardiovascular anatomy, lumped parameter models, vascular trees, scaling laws, biomechanics of the circulatory system, and 3D patient specific modeling with finite elements; course will provide an overview of the diagnosis and treatment of adult and congenital cardiovascular diseases and review recent research in the literature in a journal club format. Students will use SimVascular software to do clinicallyoriented projects in patient specific blood flow simulations. Prerequisites: CME102, ME133 and CME192.
Same as: BIOE 285, ME 285
CME 291. Master's Research. 16 Unit.
Students require faculty sponsor. (Staff).
CME 292. Advanced MATLAB for Scientific Computing. 1 Unit.
Short course running first four weeks of the quarter (8 lectures) with interactive online lectures and application based assignment. Students will access the lectures and assignments on https://suclass.stanford.edu. Students will be introduced to advanced MATLAB features, syntaxes, and toolboxes not traditionally found in introductory courses. Material will be reinforced with inclass examples, demos, and homework assignment involving topics from scientific computing. MATLAB topics will be drawn from: advanced graphics (2D/3D plotting, graphics handles, publication quality graphics, animation), MATLAB tools (debugger, profiler), code optimization (vectorization, memory management), objectoriented programming, compiled MATLAB (MEX files and MATLAB coder), interfacing with external programs, toolboxes (optimization, parallel computing, symbolic math, PDEs). Scientific computing topics will include: numerical linear algebra, numerical optimization, ODEs, and PDEs.
CME 298. Basic Probability and Stochastic Processes with Engineering Applications. 3 Units.
Calculus of random variables and their distributions with applications. Review of limit theorems of probability and their application to statistical estimation and basic Monte Carlo methods. Introduction to Markov chains, random walks, Brownian motion and basic stochastic differential equations with emphasis on applications from economics, physics and engineering, such as filtering and control. Prerequisites: exposure to basic probability.
Same as: MATH 158
CME 300. First Year Seminar Series. 1 Unit.
Required for firstyear ICME Ph.D. students; recommended for firstyear ICME M.S. students. Presentations about research at Stanford by faculty and researchers from Engineering, H&S, and organizations external to Stanford. May be repeated for credit.
CME 302. Numerical Linear Algebra. 3 Units.
Solution of linear systems, accuracy, stability, LU, Cholesky, QR, least squares problems, singular value decomposition, eigenvalue computation, iterative methods, Krylov subspace, Lanczos and Arnoldi processes, conjugate gradient, GMRES, direct methods for sparse matrices. Prerequisites: CME 108, MATH 114, MATH 104.
CME 303. Partial Differential Equations of Applied Mathematics. 3 Units.
Firstorder partial differential equations; method of characteristics; weak solutions; elliptic, parabolic, and hyperbolic equations; Fourier transform; Fourier series; and eigenvalue problems. Prerequisite: Basic coursework in multivariable calculus and ordinary differential equations, and some prior experience with a proofbased treatment of the material as in MATH 171 or MATH 61CM.nnNOTE: Undergraduates require instructor permission to enroll. Undergraduates interested in taking the course should contact the instructor for permission, providing information about relevant background such as performance in prior coursework, reading, etc.
Same as: MATH 220
CME 305. Discrete Mathematics and Algorithms. 3 Units.
Topics: Basic Algebraic Graph Theory, Matroids and Minimum Spanning Trees, Submodularity and Maximum Flow, NPHardness, Approximation Algorithms, Randomized Algorithms, The Probabilistic Method, and Spectral Sparsification using Effective Resistances. Topics will be illustrated with applications from Distributed Computing, Machine Learning, and largescale Optimization. Prerequisites: CS 261 is highly recommended, although not required.
Same as: MS&E 316
CME 306. Numerical Solution of Partial Differential Equations. 3 Units.
Hyperbolic partial differential equations: stability, convergence and qualitative properties; nonlinear hyperbolic equations and systems; combined solution methods from elliptic, parabolic, and hyperbolic problems. Examples include: Burger's equation, Euler equations for compressible flow, NavierStokes equations for incompressible flow. Prerequisites: MATH 220 or CME 302.nnNOTE: Undergraduates require instructor permission to enroll. Undergraduates interested in taking the course should contact the instructor for permission, providing information about relevant background such as performance in prior coursework, reading, etc.
Same as: MATH 226
CME 307. Optimization. 3 Units.
Applications, theories, and algorithms for finitedimensional linear and nonlinear optimization problems with continuous variables. Elements of convex analysis, first and secondorder optimality conditions, sensitivity and duality. Algorithms for unconstrained optimization, and linearly and nonlinearly constrained problems. Modern applications in communication, game theory, auction, and economics. Prerequisites: MATH 113, 115, or equivalent.
Same as: MS&E 311
CME 308. Stochastic Methods in Engineering. 3 Units.
The basic limit theorems of probability theory and their application to maximum likelihood estimation. Basic Monte Carlo methods and importance sampling. Markov chains and processes, random walks, basic ergodic theory and its application to parameter estimation. Discrete time stochastic control and Bayesian filtering. Diffusion approximations, Brownian motion and an introduction to stochastic differential equations. Examples and problems from various applied areas. Prerequisites: exposure to probability and background in analysis.
Same as: MATH 228, MS&E 324
CME 309. Randomized Algorithms and Probabilistic Analysis. 3 Units.
Randomness pervades the natural processes around us, from the formation of networks, to genetic recombination, to quantum physics. Randomness is also a powerful tool that can be leveraged to create algorithms and data structures which, in many cases, are more efficient and simpler than their deterministic counterparts. This course covers the key tools of probabilistic analysis, and application of these tools to understand the behaviors of random processes and algorithms. Emphasis is on theoretical foundations, though we will apply this theory broadly, discussing applications in machine learning and data analysis, networking, and systems. Topics include tail bounds, the probabilistic method, Markov chains, and martingales, with applications to analyzing random graphs, metric embeddings, random walks, and a host of powerful and elegant randomized algorithms. Prerequisites: CS 161 and STAT 116, or equivalents and instructor consent.
Same as: CS 265
CME 321A. Mathematical Methods of Imaging. 3 Units.
Image denoising and deblurring with optimization and partial differential equations methods. Imaging functionals based on total variation and l1 minimization. Fast algorithms and their implementation.
Same as: MATH 221A
CME 321B. Mathematical Methods of Imaging. 3 Units.
Array imaging using Kirchhoff migration and beamforming, resolution theory for broad and narrow band array imaging in homogeneous media, topics in highfrequency, variable background imaging with velocity estimation, interferometric imaging methods, the role of noise and inhomogeneities, and variational problems that arise in optimizing the performance of array imaging algorithms.
Same as: MATH 221B
CME 322. Spectral Methods in Computational Physics. 3 Units.
Data analysis, spectra and correlations, sampling theorem, nonperiodic data, and windowing; spectral methods for numerical solution of partial differential equations; accuracy and computational cost; fast Fourier transform, Galerkin, collocation, and Tau methods; spectral and pseudospectral methods based on Fourier series and eigenfunctions of singular SturmLiouville problems; Chebyshev, Legendre, and Laguerre representations; convergence of eigenfunction expansions; discontinuities and Gibbs phenomenon; aliasing errors and control; efficient implementation of spectral methods; spectral methods for complicated domains; time differencing and numerical stability.
Same as: ME 408
CME 323. Distributed Algorithms and Optimization. 3 Units.
The emergence of clusters of commodity machines with parallel processing units has brought with it a slew of new algorithms and tools. Many fields such as Machine Learning and Optimization have adapted their algorithms to handle such clusters. Topics include distributed and parallel algorithms for: Optimization, Numerical Linear Algebra, Machine Learning, Graph analysis, Streaming algorithms, and other problems that are challenging to scale on a commodity cluster. The class will focus on analyzing parallel and distributed programs, with some implementation using Apache Spark and TensorFlow. Recommended prerequisites: Discrete math at the level of CS 161 and programming at the level of CS 106A.
CME 328. Advanced Topics in Partial Differential Equations. 3 Units.
Contents change each time and is taught as a topics course, most likely by a faculty member visiting from another institution. May be repeated for credit. Topic in 201213: numerical solution of timedependent partial differential equations is a fundamental tool for modeling and prediction in many areas of science and engineering. In this course we explore the stability, accuracy, efficiency, and appropriateness of specialized temporal integration strategies for different classes of partial differential equations including stiff problems and fully implicit methods, operator splitting and semiimplicit methods, extrapolation methods, multirate time integration, multiphysics problems, symplectic integration, and temporal parallelism. Prerequisites: recommended CME303 and 306 or with instructor's consent.
CME 330. Applied Mathematics in the Chemical and Biological Sciences. 3 Units.
Mathematical solution methods via applied problems including chemical reaction sequences, mass and heat transfer in chemical reactors, quantum mechanics, fluid mechanics of reacting systems, and chromatography. Topics include generalized vector space theory, linear operator theory with eigenvalue methods, phase plane methods, perturbation theory (regular and singular), solution of parabolic and elliptic partial differential equations, and transform methods (Laplace and Fourier). Prerequisites: CME 102/ENGR 155A and CME 104/ENGR 155B, or equivalents.
Same as: CHEMENG 300
CME 335. Advanced Topics in Numerical Linear Algebra. 3 Units.
Possible topics: Classical and modern (e.g., focused on provable communication minimization) algorithms for executing dense and sparsedirect factorizations in highperformance, distributedmemory environments; distributed dense eigensolvers, dense and sparsedirect triangular solvers, and sparse matrixvector multiplication; unified analysis of distributed Interior Point Methods for symmetric cones via algorithms for distributing Jordan algebras over products of secondorder cones and Hermitian matrices. May be repeated for credit. Prerequisites: CME 302 and CME 304 (or equivalents).
CME 342. Parallel Methods in Numerical Analysis. 3 Units.
Emphasis is on techniques for obtaining maximum parallelism in numerical algorithms, especially those occurring when solving matrix problems, partial differential equations, and the subsequent mapping onto the computer. Implementation issues on parallel computers. Topics: parallel architecture, programming models (MPI, GPU Computing with CUDA ¿ quick review), matrix computations, FFT, fast multiple methods, domain decomposition, graph partitioning, discrete algorithms. Prerequisites: 302 or 200 (ME 300A), 213 or equivalent, or consent of instructor. Recommended: differential equations and knowledge of a highlevel programming language such as C or C++ (F90/95 also allowable).
CME 345. Model Reduction. 3 Units.
Model reduction is an indispensable tool for computationalbased design and optimization, statistical analysis, embedded computing, and realtime optimal control. It is also essential for scenarios where realtime simulation responses are desired. This course presents the basic mathematical theory for projectionbased model reduction. It is intended primarily for graduate students interested in computational sciences and engineering. The course material described below is complemented by a balanced set of theoretical, algorithmic, and Matlab computer programming homework assignments.nnPrerequisitesnSolid foundations in numerical linear algebra (CME 200 or equivalent).nBasic numerical methods for ODEs (CME 206 or equivalent).
Same as: AA 216
CME 364A. Convex Optimization I. 3 Units.
Convex sets, functions, and optimization problems. The basics of convex analysis and theory of convex programming: optimality conditions, duality theory, theorems of alternative, and applications. Leastsquares, linear and quadratic programs, semidefinite programming, and geometric programming. Numerical algorithms for smooth and equality constrained problems; interiorpoint methods for inequality constrained problems. Applications to signal processing, communications, control, analog and digital circuit design, computational geometry, statistics, machine learning, and mechanical engineering. Prerequisite: linear algebra such as EE263, basic probability.
Same as: EE 364A
CME 364B. Convex Optimization II. 3 Units.
Continuation of 364A. Subgradient, cuttingplane, and ellipsoid methods. Decentralized convex optimization via primal and dual decomposition. Monotone operators and proximal methods; alternating direction method of multipliers. Exploiting problem structure in implementation. Convex relaxations of hard problems. Global optimization via branch and bound. Robust and stochastic optimization. Applications in areas such as control, circuit design, signal processing, and communications. Course requirements include project. Prerequisite: 364A.
Same as: EE 364B
CME 369. Computational Methods in Fluid Mechanics. 3 Units.
The last two decades have seen the widespread use of Computational Fluid Dynamics (CFD) for analysis and design of thermalfluids systems in a wide variety of engineering fields. Numerical methods used in CFD have reached a high degree of sophistication and accuracy. The objective of this course is to introduce ¿classical¿ approaches and algorithms used for the numerical simulations of incompressible flows. In addition, some of the more recent developments are described, in particular as they pertain to unstructured meshes and parallel computers. An indepth analysis of the procedures required to certify numerical codes and results will conclude the course.
Same as: ME 469
CME 371. Computational Biology in Four Dimensions. 3 Units.
Cuttingedge research on computational techniques for investigating and designing the threedimensional structure and dynamics of biomolecules, cells, and everything in between. These techniques, which draw on approaches ranging from physicsbased simulation to machine learning, play an increasingly important role in drug discovery, medicine, bioengineering, and molecular biology. Course is devoted primarily to reading, presentation, discussion, and critique of papers describing important recent research developments. Prerequisite: CS 106A or equivalent, and an introductory course in biology or biochemistry. Recommended: some experience in mathematical modeling (does not need to be a formal course).
Same as: BIOMEDIN 371, BIOPHYS 371, CS 371
CME 372. Applied Fourier Analysis and Elements of Modern Signal Processing. 3 Units.
Introduction to the mathematics of the Fourier transform and how it arises in a number of imaging problems. Mathematical topics include the Fourier transform, the Plancherel theorem, Fourier series, the Shannon sampling theorem, the discrete Fourier transform, and the spectral representation of stationary stochastic processes. Computational topics include fast Fourier transforms (FFT) and nonuniform FFTs. Applications include Fourier imaging (the theory of diffraction, computed tomography, and magnetic resonance imaging) and the theory of compressive sensing. NOTE: Undergraduates require instructor permission to enroll. Undergraduates interested in taking the course should contact the instructor for permission, providing information about relevant background such as performance in prior coursework, reading, etc.
Same as: MATH 262
CME 375. Advanced Topics in Convex Optimization. 3 Units.
Modern developments in convex optimization: semidefinite programming; novel and efficient firstorder algorithms for smooth and nonsmooth convex optimization. Emphasis on numerical methods suitable for large scale problems arising in science and engineering. Prerequisites: convex optimization (EE 364), linear algebra (MATH 104), numerical linear algebra (CME 302); background in probability, statistics, real analysis and numerical optimization.
Same as: MATH 301
CME 390. Curricular Practical Training. 1 Unit.
Educational opportunities in high technology research and development labs in applied mathematics. Qualified ICME students engage in internship work and integrate that work into their academic program. Students register during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and followon projects they expect to perform. May be repeated three times for credit.
CME 390A. Curricular Practical Training. 1 Unit.
Educational opportunities in high technology research and development labs in applied mathematics. Qualified ICME Ph.D. students engage in internship work and integrate that work into their academic program. Students register during the quarter they are employed and complete a research report outlining their work activity, problems investigated, results, and followon projects they expect to perform.
CME 399. Special Research Topics in Computational and Mathematical Engineering. 115 Unit.
Graduatelevel research work not related to report, thesis, or dissertation. May be repeated for credit.
CME 400. Ph.D. Research. 115 Unit.
.
CME 444. Computational Consulting. 13 Unit.
Advice by graduate students under supervision of ICME faculty. Weekly briefings with faculty adviser and associated faculty to discuss ongoing consultancy projects and evaluate solutions. May be repeated for credit.
CME 500. Departmental Seminar. 1 Unit.
This seminar series in winter quarter will explore how ICME coursework and research is applied in various organizations around the world. It will feature speakers from ICME affiliate companies and ICME alumni giving technical talks on their use of computational math in their current roles. May be repeated for credit.
CME 801. TGR Project. 0 Units.
.
CME 802. TGR Dissertation. 0 Units.
.