Materials for a technical, nuts-and-bolts course about increasing transparency, fairness, robustness, and security in machine learning.
- Lecture 1: Explainable Machine Learning Models
- Lecture 2: Post-hoc Explanation
- Lecture 3: Bias Testing and Remediation
- Lecture 4: Machine Learning Security
- Lecture 5: Machine Learning Model Debugging
- Lecture 6: Foundation Models for Tabular Data
- Lecture 7: Responsible Machine Learning Best Practices
Corrections or suggestions? Please file a GitHub issue.
Source: Simple Explainable Boosting Machine Example
- Lecture Notes
- Software Examples:
- Assignment 1:
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 2 (pp. 33 - 50) and Chapter 6 (pp. 189 - 217)
- Check availablity through GWU Libraries access to O'Reilly Safari
- Lecture 1 Additional Material
Source: Global and Local Explanations of a Constrained Model
- Lecture Notes
- Software Example
- Assignment 2
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 2 (pp. 50 - 80) and Chapter 6 (pp. 208 - 230)
- Check availablity through GWU Libraries access to O'Reilly Safari
- Lecture 2 Additional Material
Source: Lecture 3 Notes
- Lecture Notes
- Software Example
- Assignment 3
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 4 and Chapter 10
- Check availablity through GWU Libraries access to O'Reilly Safari
- Lecture 3 Additional Material
Source: Responsible Machine Learning
- Lecture Notes
- Software Example
- Assignment 4
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 5 and Chapter 11
- Lecture 4 Additional Material
Source: Real-World Strategies for Model Debugging
- Lecture Notes
- Software Example
- Assignment 5
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 3 and Chapter 8
- Check availablity through GWU Libraries access to O'Reilly Safari
- Lecture 5 Additional Material
- Lecture Notes
- Software Example
- Assignment 5
- Recommended reading:
- Lecture 6 Additional Material
A Responsible Machine Learning Workflow Diagram. Source: Information, 11(3) (March 2020).
- Lecture Notes
- Assignment 7
- Recommended reading: Machine Learning for High-Risk Applications, Chapter 1 and Chapter 12
- Lecture 7 Additional Material
Most lecture software examples use H2O-3.
Run notebooks from the repository root so they can find course data and the util package. Install uv, Visual Studio Code, and the Python and Jupyter extensions. The course environment uses Python 3.11 and dependencies recorded in pyproject.toml and uv.lock.
The default course environment uses H2O-3 with NumPy 1. Install a 64-bit Java Development Kit (JDK) using a package manager or OpenJDK distribution for your operating system, then set JAVA_HOME to its installation directory. H2O-3 3.46 lists Java 8–17 as supported; OpenJDK build 27 has also worked with these course notebooks, but is outside H2O's published support range (H2O-3 requirements).
On macOS and Linux:
uv python install 3.11
uv sync
export JAVA_HOME=/path/to/java/home
code .On Windows PowerShell:
$env:JAVA_HOME = "C:\Path\To\Java\Home"
uv python install 3.11
uv sync
code .For these notebooks, select the Python 3.11 environment in .venv as the notebook kernel (.venv/bin/python on macOS/Linux; .venv\Scripts\python.exe on Windows).
For notebooks that do not use H2O-3, create a separate NumPy 2 environment. Do not install the course and legacy-h2o groups into the same environment.
On macOS and Linux:
UV_PROJECT_ENVIRONMENT=.venv-numpy2 uv sync --group course --group notebook-execution --no-default-groups
code .On Windows PowerShell:
$env:UV_PROJECT_ENVIRONMENT = ".venv-numpy2"
uv sync --group course --group notebook-execution --no-default-groups
code .Select the Python 3.11 environment in .venv-numpy2 as the notebook kernel (.venv-numpy2/bin/python on macOS/Linux; .venv-numpy2\Scripts\python.exe on Windows). On macOS, install the XGBoost OpenMP runtime once with brew install libomp. Linux distributions generally provide the OpenMP runtime through their system packages. Windows users need the Microsoft Visual C++ Redistributable for XGBoost examples.
To use JupyterLab in the default H2O-3 environment, run uv run jupyter lab from the repository root.
See the VS Code Jupyter guide for kernel selection details.
The software is licensed under the MIT License. Course content is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).

