My goal as an educator is to make computing, quantitative reasoning, and data science accessible to all students. I approach this goal through actively inclusive teaching practices and evidence-based pedagogy. My courses often involve include flipped classrooms, project-based learning, structured group work, writing assignments, and alternative grading.

My students have said some nice things about my teaching.

Current Courses

In Spring 2023, I am teaching CSCI 0451: Machine Learning.

Previous Courses at Middlebury

Fall 2022:

Courses at UCLA

The pages below contain lecture notes and other resources for previous courses that I taught at UCLA. You may find these sites useful, but please note that they are no longer maintained.

  • PIC 16A: Python with Applications I. A flipped-classroom, team-based course focusing on Python basics and technical computing. Special emphasis on data science, machine learning, and algorithmic bias.
  • PIC 16B: Python with Applications II. A project-based course in advanced technical computing and data science with Python. Topics include data analysis and acquisition; numerical programming; machine learning via TensorFlow; natural language processing; and network science.
  • MATH 168: Introduction to Networks. An upper division course in the mathematics of network science. Topics including measuring networks, random graph models, data science with graph data, and dynamical systems on networks.