My teaching experience constitutes a variety of STEM courses for students of different levels.

I Teaching

Teaching is my calling. As a student, I was lucky to have many wonderful teachers, both within a public school system and at a small liberal arts college where I completed an undergraduate degree, who inspired me to become an educator. I mention a few of them in a reflection on the occasion of winning the Herbert Simon Teaching Award; in what follows, I will detail my teaching experience at Carnegie Mellon.

Since 2015, I have served as a “Swiss army knife” for a growing, interdisciplinary department, teaching courses in mathematics, programming, computational biology, algorithms, and even professional skills. Furthermore, I have taught students at many educational levels, from high school to Ph.D., and from a wide variety of cultures.

I constantly seek ways to improve my own teaching. I implement active learning throughout my courses and tailor the active learning classroom depending on the course and student group (see my statement of teaching philosophy for more details). I also look for ways in which offline education can be informed and improved by online materials, especially those that I have developed as part of my extensive work in online education. Specifically, because of my work with the Bioinformatics Algorithms project, I was able to develop one of a tiny number of fully flipped technical courses offered at Carnegie Mellon (which I write about here).

Teaching Evaluations

I have received superlative teaching evaluations over the past several years. I share a figure of averages from my evaluations across all courses in the figure below.

Qualitative comments from students are provided as “testimonials” on individual course pages.

Averages for each category of faculty course evaluations in all courses that I have taught between 2015 and 2021. Green bars represent my averages, which are significantly higher than the department, college, and university averages.

Courses I Have Taught

Below is a summary of all my teaching at Carnegie Mellon University. Each course description links to a page describing the course in greater detail.

Great Ideas in Computational Biology (2019-Present)

Originally developed with Carl Kingsford, Great Ideas in Computational Biology provides an introduction to many of the great ideas that have formed the foundation for the transformation of the life sciences into a fully-fledged computational discipline. Intended as a first exposure to computational biology for first-year undergraduates in the School of Computer Science. Great Ideas in Computational Biology is the only computational biology course in the world designed for computer science undergraduates.

PreCollege Program in Computational Biology (2019-Present)

The PreCollege Program in Computational Biology is a three-week full time summer program for rising seniors in high school that I founded with Prof. Joshua Kangas. Students conduct laboratory experiments and then write their own algorithms to analyze the data produced by these experiments in order to answer real research questions.

Fundamentals of Bioinformatics (2016-Present)

Fundamentals of Bioinformatics is a graduate level course that examines a variety of algorithms that are central to bioinformatics, including those for genome assembly, sequence alignment, evolutionary tree construction, and clustering. Students also see how these algorithms are applied to real biological datasets by using popular biological software tools.

The course is built on a flipped model using my Bioinformatics Algorithms project with Pavel Pevzner. It was a finalist for a Teaching Innovation Award at Carnegie Mellon and was the subject of an education article in PLOS Computational Biology.

Programming for Scientists (2015-Present)

Programming for Scientists is a rigorous introduction to programming for students with a scientific interest.  Topics are motivated by scientific problems, and assignments have a scientific focus (taken from biology, physics, statistics, mathematics, and game theory). I have taught versions of the course for both undergraduate and graduate students in the sciences.

This course inspired the Programming for Lovers project, an open online programming course.

Professional Issues for Computational Biologists (2015-2020)

Professional Issues for Computational Biologists is a seminar course that I taught to MS students to develop vital professional skills. The course focuses on resume building, effective team collaboration, presentation skills, and mock interviews.

Essential Mathematics and Statistics (2019)

Essential Mathematics and Statistics is a rigorous, accelerated foundational course in mathematical proofs, logic, discrete mathematics, linear algebra, probability, and statistics that I proposed and then developed with Seyoung Kim for first-year MS students in the computational biology department. I taught the mathematics half of the course in its first run in 2019.

Unfortunately, I have not been able to teach this course since its first run due to a full teaching schedule.

Summer Directed Study (2020)

I oversaw a summer independent study course with an undergraduate student. In this course, we read Godel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter as foundational reading. We also consulted additional resources tying the underlying nature of consciousness to theoretical computer science.

Page Contents