BME2315: Computational Biomedical Engineering
I was a Co-instructor for this course at UVA.
Most of the course focuses on using numerical methods to approximate solutions to problems that cannot be solved analytically. Because these methods can be tedious, the computational power we have these days makes implementing the methods drastically easier. Therefore, the learning objectives for the course include understanding the mathematical basis for numerical methods across an array of problem types and implementing these methods computationally in Python. The course is organized into four modules, focused on different diseases: neurodegeneration (Alzheimer’s), viral epidemics, fibrosis, and cancer.
In each module, students work in pairs (rotating each module) on a project in a shared GitHub repository, and submit a final Jupyter Notebook report telling the story of their analysis. Students were encouraged to use generative AI as an aid, while documenting how they used it.
Module 0: Introduction to Coding
- Introduction to Python [Lecture] [Code]
- Introduction to GitHub [Lecture] [GitHub reminders] [Collaboration handout]
- Introduction to Jupyter Notebooks [Lecture] [good notebook example] [bad notebook example]
Module 1: Neurodegeneration
Taught by Dr. Shayn Peirce-Cottler: using computation to manipulate, evaluate, and graph data sets, perform linear regressions, and draw conclusions from data.
Module 2: Epidemic Modeling
Students acted as modeling consultants investigating a mystery viral outbreak on campus, receiving new data releases throughout the module. They fit SIR/SEIR models to the outbreak data, identified the likely virus family, and predicted the effects of public health interventions. [GitHub repo] [Repo setup guide]
- Module overview and announcements [Lecture]
- Lecture 1: Modeling the spread of viruses [Lecture] [Outbreak Day 1 brief]
- Activity: The Immune System Game [Slides] [Cell type cards]
- Interactive: Viral disease transmissibility vs. severity
- Lecture 2: Epidemics and the SIR model [Lecture]
- Lecture 3: Euler’s method and fitting the SEIR model [Lecture]
- Interactive: SEIR 3-parameter grid search
- Optimization activity [Code]
- Lecture 4: Calculating error and predicting the effect of interventions [Lecture]
- Lecture 5: More accurate ODE solvers (Midpoint and Runge-Kutta methods) [Lecture]
- Module 2 recap and transition to Module 3 [Slides]
Module 3: Fibrosis
Using computation to organize, quantify, and evaluate lung fibrosis images across spatial scales, using interpolation and optimization. [GitHub repo]
Module 4: Cancer Machine Learning
Using machine learning on high-dimensional RNA sequencing data (TCGA) to understand disease mechanisms through the hallmarks of cancer. [GitHub repo]
- Lecture 1: Introduction to cancer [Lecture]
- Interactive: Typing test: what if you were copying the genome?
- Interactive: Hallmarks of cancer map [Hallmark rules]
- Interactive: Cancer hallmarks agent-based model [Advanced version] [Python version]
- Lecture 2: Introduction to RNA sequencing data [Lecture]
- Lecture 3: Unsupervised learning: dimensionality reduction (PCA, UMAP) [Lecture]
- Lecture 4: Clustering and a preview of supervised learning [Lecture] [PCA & clustering activity]
- Lecture 5: Supervised learning: regression, gradient descent, logistic regression, and decision trees [Lecture] [Gini coefficient activity]
- Lecture 6: What makes a good ML model? Model scoring and validation [Lecture] [In-class work]
- Lecture 7: How do I make my ML model better? Overfitting and regularization [Lecture]