## CME 211: Software Development for Scientists and Engineers

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, object-oriented 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.

Terms: Aut
| Units: 3

Instructors:
Santucci, A. (PI)
;
Bescos Alapont, G. (TA)
;
Kao, C. (TA)
...
more instructors for CME 211 »

Instructors:
Santucci, A. (PI)
;
Bescos Alapont, G. (TA)
;
Kao, C. (TA)
;
Morvan, T. (TA)
;
Shi, M. (TA)

## CME 212: Advanced Software Development for Scientists and Engineers

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.

Terms: Win
| Units: 3

Instructors:
Morvan, T. (PI)
;
Santucci, A. (PI)
;
Bescos Alapont, G. (TA)
...
more instructors for CME 212 »

Instructors:
Morvan, T. (PI)
;
Santucci, A. (PI)
;
Bescos Alapont, G. (TA)
;
Shi, M. (TA)
;
Zhu, C. (TA)

## CME 213: Introduction to parallel computing using MPI, openMP, and CUDA (ME 339)

This class will give hands-on 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. Pre-requisites include C++, templates, debugging, UNIX, makefile, numerical algorithms (differential equations, linear algebra).

Terms: Spr
| Units: 3

## CME 214: Software Design in Modern Fortran for Scientists and Engineers (EARTH 214)

This course introduces software design and development in modern Fortran. Course covers the functional, object-oriented-, 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 object-oriented design and design schematics based on the Unified Modeling Language (UML) structure, behavior, and interaction diagrams; cover the basic use of several open-source 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

Last offered: Autumn 2017

## CME 215A: Advanced Computational Fluid Dynamics (AA 215A)

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.

Last offered: Winter 2017

## CME 215B: Advanced Computational Fluid Dynamics (AA 215B)

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.

Last offered: Spring 2012

## CME 216: Machine Learning for Computational Engineering. (ME 343)

Linear and kernel support vector machines, deep learning, deep neural networks, generative adversarial networks, physics-based machine learning, forward and reverse mode automatic differentiation, optimization algorithms for machine learning, TensorFlow, PyTorch.

Terms: Win
| Units: 3

Instructors:
Darve, E. (PI)
;
Yang, Z. (TA)

## CME 217: Analytics Accelerator (BIODS 217)

This is a multidisciplinary graduate level course designed to give students hands-on experience working in teams through real-world project-based research and experiential classroom activities. Students work in dynamic teams with the support of course faculty and mentors, researching preselected topics focused on COVID-19 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. Pre-requisites: none.nThe course application generally opens 5-6 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

Terms: Aut, Win
| Units: 3
| Repeatable
2 times
(up to 6 units total)

Instructors:
Hanson, K. (PI)
;
Iaccarino, G. (PI)
;
Ioannidis, A. (PI)
...
more instructors for CME 217 »

Instructors:
Hanson, K. (PI)
;
Iaccarino, G. (PI)
;
Ioannidis, A. (PI)
;
Rivas, M. (PI)
;
Pendo, L. (TA)

## CME 232: Introduction to Computational Mechanics (ME 332)

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.

Last offered: Summer 2018

## CME 241: Reinforcement Learning for Stochastic Control Problems in Finance (MS&E 346)

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 pre-requisite 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.

Terms: Win
| Units: 3

Instructors:
Rao, A. (PI)
;
Lerner, S. (TA)

Filter Results: