Classes
NOTE: As a small liberal arts college, Ursinus generally caps classes at 25 students.
Spring 2023
I am on pre-tenure sabbatical leave from teaching this spring, and I am mostly focused on research. But I will be presenting this assignment from CS 174 at SIGCSE 2024 this spring.
Fall 2023
CS 271: Algorithms And Data Structures (30 Students)
CS 373: Theory of Computation (12 Students)
CS 477: Artificial Intelligence And Machine Learning (22 Students)
Spring 2023
CS 174: Object Oriented And Systems Programming (21 Students)
IDS 301: Problem Solving And Analysis with Python (3 Students)
CS 372: Digital Music Processing (24 Students)
Fall 2022
CS 174: Object Oriented And Systems Programming (12 Students)
CS 271: Algorithms And Data Structures (16 Students)
CS 476: Computer Graphics (21 Students)
Spring 2022
CS 174: Object Oriented And Systems Programming (12 Students)
CIE 200: Common Intellectual Experience (16 Students)
CS 371: Algorithms And Data Structures (24 Students)
Fall 2021
CS 373: Theory of Computation (16 Students)
CS 477: Artificial Intelligence And Machine Learning (22 Students)
Spring 2021
CS 371: Algorithms And Data Structures (26 Students)
CS 472: Digital Music Processing (15 Students)
Fall 2020
CS 174: Object-Oriented Programming (19 Students)
CS 476: Computer Graphics (12 Students)
Spring 2020
CS 173: Intro To Computer Science (33 Students)
IDS 301: Problem Solving And Analysis with Python (12 Students)
Fall 2019
Math 111: Calculus 1 (16 Students)
CS 476: Computer Graphics (11 Students)
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.