Classes
Fall 2023
CS 271: Algorithms And Data Structures
CS 373: Theory of Computation
CS 477: Artificial Intelligence And Machine Learning
Spring 2023
CS 174: Object Oriented And Systems Programming
IDS 301: Problem Solving And Analysis with Python
CS 372: Digital Music Processing
Fall 2022
CS 174: Object Oriented And Systems Programming
CS 271: Algorithms And Data Structures
CS 476: Computer Graphics
Spring 2022
CS 174: Object Oriented And Systems Programming
CIE 200: Common Intellectual Experience
CS 371: Algorithms And Data Structures
Fall 2021
Spring 2021
Fall 2020
Spring 2020
Fall 2019
Spring 2016
CS/Math 290: Digital 3D Geometry
As part of the Bass Instructor of Record Fellowship, I designed a new undergraduate course at Duke University cross-listed between computer science and math. The course was a ground up approach to 3D geometry with a statistics and signal processing focus. Assignments were in Javascript/WebGL and Python/Numpy, including sound modeling in virtual acoustic environments, rotation modeling with Euler angles and quaternions, 3D shape statistics ("Shape Google"), 3D shape alignment, and spectral mesh processing.
Click here to see the midterm exam I designed. Below are some highlights from the course syllabus
Guest Lectures / Labs on Topological Data Analysis
As a member of the Harer group both as a Ph.D. student and a postdoc, I have developed a lot of teaching materials on toplogical data analysis (TDA), including tons of demos and code, which I have used at numerous workshops and guest lectures. Below are a few highlights:
- TDA Labs from The Ground Up
This is a work in progress, which I have used at multiple workshops, including Mathematical Methods for High Dimensional Data Analysis (Summer 2016, Technical University Munich), Summer@ICERM 2017 (Brown University), and Topological Data Analysis And Persistent Homology (Summer 2018, Levico Terme, Italy)
- ripser.py
I worked with Nathaniel Saul to create a Python interface to the fast ripser library for persistent homology. As part of this, I created some pedagogical notebooks to show some lesser known features, including sparse filtrations and arbitrary field coefficients.
- Math 412 Guest Lecture on 0D persistent homology 9/6/2018
ripser.py on synthetic shapes
Sliding window of periodic videos
Lower Star Filtrations for Nonrigid 3D Shapes
Image Patches on the projective plane using Projective Coordinates
Lower star filtrations on an image to identify plant cell locations
IID Data Expeditions Labs, Fall 2014
I designed two different labs using music to get undergraduates interested in signal processing. One was a more traditional lab on pitch extraction in a digital signal processing course (ECE 381), and the other one was using novel topological techniques from my research to analyze the "shape" of the music. Click on the links below to view the assignments.
This is a work in progress, which I have used at multiple workshops, including Mathematical Methods for High Dimensional Data Analysis (Summer 2016, Technical University Munich), Summer@ICERM 2017 (Brown University), and Topological Data Analysis And Persistent Homology (Summer 2018, Levico Terme, Italy)
I worked with Nathaniel Saul to create a Python interface to the fast ripser library for persistent homology. As part of this, I created some pedagogical notebooks to show some lesser known features, including sparse filtrations and arbitrary field coefficients.




