Teaching

Nonlinear and Stochastic Optimization

CBE 60499 (graduate elective)
Fall 2018

Description: This course will provide a practical introduction to algorithms, formulations, and modern software for large-scale numerical optimization. Topics include (nonconvex) nonlinear programming, deterministic global optimization, integer programming, dynamic optimization, and stochastic programming. Multi-objective optimization and mathematical programs with complementarity constraints may be covered based on time and student interests. The target audience for is graduate students from engineering, science, and mathematics who wish to incorporate optimization methods into their research. The course will begin with a concise introduction to optimization theory and algorithms. Problem formulation and use of state-of-the-art solvers and modeling environments will be emphasized throughout the course. 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.

Main Texts:

  • Nonlinear Programming: Concepts, Algorithms, and Applications to Chemical Processes (Biegler, 2010) [link]
  • Pyomo — Optimization Modeling in Python (Hart et al, 2017) [link]

Statistical and Numerical Analysis

CBE 20258 (sophomore)
Spring 2018 (co-taught), Spring 2019, Fall 2019, Spring 2020 (co-taught)

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, p-values, statistical power
  • Regression: linear, weighted, multivariate, nonlinear, residual analysis
  • Sampling methods: non-parametric bootstrap, Monte Carlo
  • Integration methods: Gauss quadrature, Euler's, Runge-Kutta

Applications in chemical engineering and conceptual understanding are emphasized. The overall goal of this class is to provide students with basic computational techniques need for future chemical engineering classes and enable them to learn advanced topics via technical electives, internships, self-study, and on-the-job training.

Main Text:

Supplemental Text:

  • Computational Nuclear Engineering and Radiological Science Using Python (McClarren, 2018) [publisher website]

CBE 20258 in E720

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 10-minute videos focused on concepts and simple examples. Students would watch these videos before class, allowing lecture time to become extended tutorials that emphasize problem-solving.


Separation Process Principles

CBE 40443 (senior)
Fall 2017

Main Text:

  • Transport Processes and Separation Process Principles (Geankoplis, 2003) [publisher website]