Teaching
Nonlinear and Stochastic Optimization
CBE 60499 / 40499 (graduate / advanced undergraduate elective)
Fall 2018, Spring 2021
Description: This course will provide a practical introduction to models, algorithms, and modern software for largescale numerical optimization. Topics include (nonconvex) nonlinear programming, deterministic global optimization, integer programming, dynamic optimization, and stochastic programming. Multiobjective optimization and mathematical programs with complementarity constraints may be covered based on time and student interests. The class is design for advanced undergraduate/graduate students from engineering, science, and mathematics who wish to incorporate optimization methods into their research. The course will begin with an introduction to modeling and the Pythonbased Pyomo computational environment. Optimization theory and algorithms will be emphasized throughout the course.
Gradaute students: A background in linear algebra and numerical methods will be helpful but is not necessary. Students should be comfortable programming in Julia, Python, MATLAB, C, or a similar language. EE 60551: Mathematical Programming is not a prerequisite for this course.
Undergraduate students: Students must be comfortable with linear algebra and programming in Julia, Python, MATLAB, C, or a similar language. CBE 20258 or a similar undergraduate class on numerical methods is strongly recommended as a prerequisite. Please contact the instructor for any questions about preparation.
Main Texts:
 Nonlinear Programming: Concepts, Algorithms, and Applications to Chemical Processes (Biegler, 2010) [link]
 Pyomo — Optimization Modeling in Python (Hart et al, 2017) [link]
Advanced Data and Computing for Chemical Engineers
CBE 60258 (graduate elective)
Fall 2022
Data and computing skills are essential to all subdomains of modern chemical engineering, yet many students only receive adhoc training in these topics. Instead, this course provides a systematic and rigorous introduction to the fundamentals of i) computing in Python; ii) mathematical modeling; iii) numerical methods for equation solving, integration, and optimization; iv) probability and statistics; v) data analytics. Topics include:
 Planning and debugging computer programs
 Functions and data types in Python
 Visualization in Python
 Computational linear algebra including LU, QR, and Cholesky factorizations, Eigen and singular value decompositions
 Newton's method for equation solving and optimization
 Numerical integration methods: Gauss quadrature, Euler's, RungeKutta
 Numerical solution of ordinary and partial differential equations, systems of differentialalgebraic equations
 Probability: random variables, laws, common distributions
 Covariance and error propagation
 Statistical inference: hypothesis testing, confidence intervals, pvalues, statistical power
 Regression: linear, weighted, multivariate, nonlinear, residual analysis
 Modelbased design of experiments
 Sampling methods: nonparametric bootstrap, Monte Carlo
Conceptual understanding and applications in engineering and the chemical sciences are emphasized. The overall goal of this class is to provide graduate students with data analytics and computational techniques needed for their diverse research and scholarship endeavors and enable them to learn advanced topics via technical electives, research assistantships, internships, selfstudy, and onthejob training.
Statistical and Numerical Analysis
CBE 20258 (sophomore)
Spring 2018 (cotaught), Spring 2019, Fall 2019, Spring 2020 (cotaught)
This course introduces the fundamentals of i) computing in Python, ii) mathematical modeling, iii) numerical methods for equation solving, integration and optimization, and iv) probability and statistics. Topics include:
 Planning and debugging computer programs
 Functions and data types in Python
 Visualization in Python
 Degree of freedom analysis
 Gaussian elimination and LU factorization with partial pivoting
 Newton's method for equation solving and optimization
 Probability: random variables, laws, common distributions
 Covariance and error propagation
 Statistical inference: hypothesis testing, confidence intervals, pvalues, statistical power
 Regression: linear, weighted, multivariate, nonlinear, residual analysis
 Sampling methods: nonparametric bootstrap, Monte Carlo
 Integration methods: Gauss quadrature, Euler's, RungeKutta
Applications in chemical engineering and conceptual understanding are emphasized. The overall goal of this class is to provide students with basic computational techniques needed for future chemical engineering classes and enable them to learn advanced topics via technical electives, internships, selfstudy, and onthejob training.
Main Text:

Statistics for Engineers and Scientists (Navidi, 2014) [publisher website]
Supplemental Text:

Computational Nuclear Engineering and Radiological Science Using Python (McClarren, 2018) [publisher website]
Prof. Dowling lecturing in E720 Corbett Hall. Prof. Dowling is participating in the first cohort of the Kaneb Center Course Design Academy (KCCDA) during Summer 2019 to "flip" CBE 20258. The vision is to divide lecture material into brief 5 to 10minute videos focused on concepts and simple examples. Students would watch these videos before class, allowing lecture time to become extended tutorials that emphasize problemsolving.
Separation Process Principles
CBE 40443 (senior)
Fall 2017
Main Text:
 Transport Processes and Separation Process Principles (Geankoplis, 2003) [publisher website]