Process Dynamics and Control in Python

This course focuses on a complete start to finish process of physics-based modeling, data driven methods, and controller design. Although some knowledge of computer programming is required, students are led through several introductory topics that develop an understanding of numerical methods in process control. This course focuses on methods that are used in practice for simple or complex systems. It is divided into three main parts including (1) data driven modeling and controller development, (2) physics-based modeling and controller development, and (3) advanced controls with optimization. Example problems are provided throughout in the Python programming language.


 John D. Hedengren
 Office: 350R CB, 801-422-2590
 john.hedengren [at]
 Office hours M, W, Fr 2-2:30 PM (after class), 350R CB

John Hedengren worked 5 years with ExxonMobil Chemical on Optimization solutions for the petrochemical industry. He conducts research in optimization methods, modeling systems, and applications in Chemical Engineering. The PRISM group is actively working on oil and gas drilling automation, reservoir engineering, process optimization, unmanned aerial vehicles, and systems biology.

Teaching Assistants

The office hours for the teaching assistants are held in CB 217 (UO Lab).

 Brigham Hansen
 Office Hours: MWF 12-1 PM
 brighamhansen [at] 
 Grades Monday Homework

 Elham Amini
 Office Hours: T/Th 8-9:30 AM
 amini.sharifuni [at]
 Grades Wednesday Homework

 Daniel Carlson
 Office Hours: T/Th 9:30-11 AM
 daniel.j.carlson [at] 
 Grades Friday Homework

Course Objectives

It is the intent of this course to help the student to:

  1. Understand and be able to describe quantitatively the dynamic behavior of process systems.
  2. Learn the fundamental principles of classical control theory, including different types of controllers and control strategies.
  3. Develop the ability to describe quantitatively the behavior of simple control systems and to design control systems.
  4. Develop the ability to use computer software to help describe and design control systems.
  5. Learn how to tune a control loop and to apply this knowledge in the laboratory.
  6. Gain a brief exposure to advanced control strategies.

Install Python

A first assignment for this course is to install Python. Recent versions are compatible with posted code examples including versions of Python 2.7 or Python 3+. Popular distributions are Anaconda, PyCharm, and