These are the lecture notes for ME 539 Introduction to Scientific Machine Learning. Please note that these notes are a companion to the class lectures. They are not a self-contained, textbook-like exposition of the topic of scientific machine learning. They are supposed to be complementary to the course lectures.

Course description#

This course introduces data science for engineers who just started on their scientific machine-learning journey. We begin with an extensive review of probability theory as the language of uncertainty, discuss Monte Carlo sampling for uncertainty propagation, and cover the basics of supervised, unsupervised learning and state space models. The course also introduces physics-informed deep learning and its potential for revolutionizing engineering practice. We end with automated Bayesian inference using probabilistic programming, giving practical examples of research-grade problems. Throughout the course, the instructor follows a probabilistic perspective highlighting the first principles behind the presented method, aiming to teach students how to create and fit their models.

Course learning outcomes#

After completing this course, you will be able to:

  • Represent uncertainty in parameters in engineering or scientific models using probability theory.

  • Propagate uncertainty through physical models to quantify the induced uncertainty in quantities of interest.

  • Solve basic supervised learning tasks like regression, classification, and filtering.

  • Solve basic unsupervised learning tasks, such as clustering, dimensionality reduction, and density estimation.

  • Create new models that encode physical information and other causal assumptions.

  • Calibrate arbitrary models using data.

  • Apply various Python coding skills.

  • Load and visualize data sets in Jupyter Notebooks.

  • Visualize uncertainty in Jupyter notebooks.

  • Recognize basic Python software (e.g., Pandas, numpy, scipy, sci-kit-learn) and advanced Python software (e.g., PyTorch, pyro, jax, pymc3) commonly used in modern data science.


  • Working knowledge of multivariate calculus and basic linear algebra.

  • Basic Python knowledge.

  • Knowledge of probability and numerical methods for engineers would be helpful but optional.

What if I need to become more familiar with Python?#

If you have no prior experience with Python, go over Lectures 1 to 6 of my undergraduate course on data science for mechanical engineers. These lectures include a very gentle introduction to the same basic Python concepts. It should take you about a week to cover these seven lectures.