The Institute for Computational and Mathematical Engineering (ICME) is a degree granting institute at the intersection of mathematics, computing, engineering and applied sciences. iCME designs state-of-the-art 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 outstanding 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 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: financial mathematics, fluid dynamics, protein folding, data science including machine learning and recommender systems, ocean dynamics, climate modeling, reservoir engineering, aerodynamics and space applications, computer graphics, 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 (CUDA, MapReduce), among others.
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, particularly to explore an interest in continuing to the doctoral program. Although there is not specific background requirement, significant exposure to mathematics and engineering course work is necessary for successful completion of the program.
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.
The following requirements must be met in order to earn the Master's degree in Computational and Mathematical Engineering:
- Requirement 1: Foundational Courses (12 units)
- Requirement 2: Breadth Electives (18 units)
- Requirement 3: Specialized Electives (9 units)
- Requirement 4: Programming (3 units)
- Requirement 5: Seminars (3 units)
Students must demonstrate foundational knowledge in the field by completing four of the six core courses:
- CME 303. Partial Differential Equations of Applied Mathematics
- CME 306. Numerical Solution of Partial Differential Equations
- CME 302. Numerical Linear Algebra
- CME 304. Numerical Optimization
- CME 305. Discrete Mathematics and Algorithms
- CME 308. Stochastic Methods in Engineering
Courses in this area must be taken for letter grades. Deviations from the core curriculum must be justified in writing and approved by the student's iCME adviser and the chair of the iCME curriculum committee. Courses that are waived may not be counted towards the master's degree.
18 units of general electives to demonstrate breadth of knowledge in technical area. The elective course list represents automatically accepted electives within the program. However, electives are not limited to the current list, 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. Courses outside this list can be accepted as electives subject to approval by the student's iCME adviser.
9 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.
3 units of programming course work demonstrating programming proficiency. All graduate students in the program are required to complete programming course for letter grade at the level of CME212 Advanced Programming for Scientists and Engineers or higher.
3 units of iCME graduate seminars or other approved seminars. Additional seminar units may not be counted toward the 45-unit requirement.
For course tuition and fees, please click Tuition & Fees.
Most part-time students take an average of 3 to 5 years to complete the 45-unit requirement. You must complete a Master's degree within 5 years of starting the program. Note: Some on-campus attendance may be required for degree completion.
For assistance while in the application process, please contact the Institute of Computational and Mathematical Engineering using the following email address: email@example.com
Fundamental courses in mathematics and computing may be needed as prerequisites for other courses in the program. Check the prerequisites of each required course. Preparatory courses include such subjects as: calculus, linear algebra and differential calculus of several variables, integral calculus of several variables, ODEs with linear algebra, linear algebra and matrix theory, vector calculus for engineers, linear algebra and PDEs for engineers, introduction to scientific computing, linear algebra with application to engineering computations, PDEs in engineering, Computer Programming in C++ for Earth Scientists and Engineers, Introduction to Large-Scale Computing in Engineering, numerical linear algebra, programming methodology, programming abstractions, machine learning, introduction to optimization, theory of probability, and data mining and analysis.