Teaching
How I teach data science, and over a decade of workshops, conference tutorials, and recorded courses outside the classroom.
I’ve been teaching data science since 2014, when I started teaching workshops with The Carpentries. That turned into tutorials at conferences like SciPy, PyCon, and posit::conf, recorded courses with Pearson and DataCamp, and 4 years as a Data Science Educator at Posit (formerly RStudio), where I’m also a Certified Tidyverse Trainer. These days I’m a Lecturer in Statistics at the University of British Columbia, and my courses there have their own page.
🏫 Teaching at UBC
My courses in UBC Statistics and the Master of Data Science program, and the open textbooks they run on.
🎤 Talks and workshops
Every talk, workshop, and tutorial I’ve given, with links to the materials.
🩺 ds4biomed
Data Science for the Biomedical Sciences: an online book teaching data skills to clinicians and researchers.
Open textbooks
All of these are free to read online, so anyone can learn from them or teach with them. The first 3 run my courses in UBC’s Master of Data Science program.
- Reproducible and Trustworthy Workflows for Data Science: version control, environments, containers, testing, CI/CD, and packaging (co-author and maintainer; DSCI 310, 522, and 524).
- Computing Platforms for Data Science: Bash, Git, Quarto, and virtual environments (co-author and maintainer; DSCI 521).
- Data Visualization II: dashboards with Shiny in R and Python, interactive maps, and AI-powered apps (co-author and maintainer; DSCI 532).
- Data Science for the Biomedical Sciences (ds4biomed): data skills for clinicians and researchers, written alongside my PhD research on data science education in the biomedical sciences (author, 2021).
How I teach
I picked up live coding from my time with The Carpentries, and it’s still a big part of how I teach, mistakes and all. Each lecture’s code ends up in its own public GitHub repository, so students have something to look back on when they’re working on their assignments (and a colleague who took over one of my courses found them the fastest way to see what had been taught).
I start every lecture with a 10 to 15 minute review of earlier topics, since students don’t always bring what they already know into a new lecture on their own. I also try to keep in mind who’s actually in the room. My PhD research was on learner personas, designing data science materials for a specific audience, and in DSCI 100 I’ve noticed students arriving with less computing background than they used to, so I added code review sessions and wrote worked examples for every week in both R and Python.
A lot of my course material starts out as a conference tutorial or workshop, where I get to see how it lands with an audience before it goes into a course. The LLM unit in DSCI 532 went through a workshop for MDS students, tutorials at PyData and the New York Data Science & AI Conference, and a talk to my department before any students had to sit through it for credit.
Teaching with AI
This year I started bringing AI into my classes on purpose, both to help students learn the material and so they can see how these tools actually work. What that looks like in my UBC courses is on the Teaching at UBC page, and I’m writing up how it goes in my Incorporating AI in the Classroom series on the blog. Outside UBC, I’m co-teaching Learn Anything with AI, a one-week retreat with Eric Ma, in February 2027.
The Carpentries
I’ve been part of The Carpentries since 2014, first teaching workshops and later training new instructors, and from 2020 to 2022 I was their Maintainer Community Lead. Everything I’ve done with them, including all 15 workshops I’ve taught, is on its own page.
Workshops and tutorials
At Virginia Tech, I co-taught the intensive data science workshop for the Data Science for the Public Good program (2015–2018).
Recent conference tutorials and workshops:
- 2026: Shiny for Python at PyCon US and SciPy; Git forking and contributing to open source at R/Medicine
- 2025: Shiny for Python at posit::conf and SciPy; LLMs for data science at PyData Seattle and the New York Data Science & AI Conference
- 2024: machine learning in Python with scikit-learn at posit::conf (materials); creating and distributing R packages at the Statistical Society of Canada (materials)
- 2016–2023: pandas tutorials at PyCon, SciPy, PyBay, and PyData; Git for data science at the New York R Conference; R and Python workshops at ODSC East, R/Medicine, and posit::conf
Those are the highlights. Every talk and workshop I’ve given, with links to its materials, is on my Talks page.
Recorded courses
- Pandas Data Analysis with Python Fundamentals, Pearson LiveLessons
- Pandas Data Cleaning and Modeling with Python, Pearson LiveLessons
- Git Essentials, Pearson LiveLessons
- Cleaning Data in Python, DataCamp
- Python for R Users, DataCamp
Writing about teaching
Posts tagged teaching on the blog, including my Preparing the Future Professoriate series from grad school.