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: 330L EB, 801-422-2590
 john.hedengren [at]
 Office hours M, W, Fr 2-2:30 PM (after class), 330L EB
 Connect on LinkedIn
John Hedengren leads the BYU PRISM group with interests in combining data science, optimization, and automation with current projects in hybrid nuclear energy system design and unmanned aerial vehicle photogrammetry. He earned a doctoral degree at the University of Texas at Austin and worked 5 years with ExxonMobil Chemical prior to joining BYU in 2011.

Teaching Assistants

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

 Adam Martin
 a.markmartin3 [at]
 Quiz and Exam Teaching Assistant

 Joshua Hammond
 jhammond02 [at]
 T/Th 12-2 PM

 Nathan Van Katwyk
 nvankatwyk [at]
 M/W/F 12-1 PM

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.

Additional Resources

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