Teaching Statement

Below I will elaborate on key aspects of my teaching philosophy which have evolved from my experiences across three departments: electrical engineering, computer science, and math. I am qualified and motivated to teach courses in any of these three areas, and am also very excited about designing innovative courses which fuse all three disciplines. A prime example of the latter kind of course was my course CS/Math 290: 3D Digital Geometry, which I designed from scratch as part of the Bass IOR Fellowship, and I will be using that as an example throughout1. I will demonstrate via this course and other experiences that the students' classroom experience is massively enriched by pedagogical tools that I have developed (which also help in research). Finally, I will discuss some of my strategies for disseminating my teaching materials to a wide audience, as well as my experience and philosophy about outreach and diversity, which goes hand in hand with teaching.

1. [Though I have not had as much experience teaching introductory courses at the college level as I have designing this type of course, I believe in my ability to teach and organize at all levels after the years I've put in mentoring and tutoring everything from pre algebra in high school to multivariable calculus in college. I also technically gave dozens of lectures as "computer club" president at my high school on topics from boolean algebra to Lisp programming (reference: Christopher Hayden), which is how I started on the path to college teaching.].

Math + Engineering: Helping Students Grow Outside Their Comfort Zone

One of my key teaching aims is to foster multidisciplinary scientific skills, which matches my background. First, I like to trick engineers/computer scientists into learning higher level math, only later to show them this is a portal into a much deeper world that they are intellectually capable of exploring. For example, one of my CS 290 students had been afraid of math her whole life and told me she was comparing herself unfavorably to other students in the class. Thankfully, she regularly attended office hours, during which I was able to show her that a lot of the skills she had developed in computer science translated to math (patience, practice, quantitative thinking, "debugging"). With her hard work and my guidance, she ended up getting the highest grade on the final assignment on Laplacian Meshes, which was by far the most mathematically advanced out of the assignments, and she told me the visual aspects and applications of that assignment really helped to solidify her understanding.

On the other side of the spectrum, mathematical students who develop important practical skills, such as programming and web design, can reach a wider audience with their work in the future. They also gain practice finding meaningful applications of theory. One specific success story I have with this dual approach is a math student whose independent research I mentored, who was a math whiz but who came in with very little programming experience. Due to their mathematical content, he took to computer vision and image processing as a gateway into coding, and I mentored him on a computer vision independent study on synapse detection in electron microscopy images of mouse brains. He then worked part time for a computer vision startup detecting sheep from satellite imagery, which motivated him to learn even more, and he is now a software engineer at Google.

Finally, there is also evidence that I can enhance and validate the experience of students like myself who already straddle the boundary between mathematics and more applied areas. One of my Digital 3D geometry students was originally a double major in math and computer science, but she had dropped the math major due to some frustration in the early curriculum. After taking my course, not only was she re-energized to pick back up and finish the math double major, but she is now pursuing a Ph.D. in computational geometry, an excellent fusion of math and computer science. She tells me this was a direct result of taking my course during her sophomore year.

Active Learning and Problem Solving In Class

Here are a couple of strategies I like to use to ensure I can detect and react to confusion in real time

  1. Raffle Point Problems: Every lecture, I give out challenge problems directly after teaching a new concept, and I go around the room and give "raffle point" to the first few groups of students who get that problem correct. At the end of the semester, the students can then cash out their raffle points to get prizes related to the course. In my digital geometry class, students got increasingly excited about this throughout the semester, and it often led to fruitful interactions where some groups got the question partially right with a key mistake, and I was able to both commend them for their "almost" solution and to point out a very important pitfall to the class

  2. Wheel of Fortune: If not enough students are participating or a small subset of the same student is participating, I sometimes like to pull out a wheel of fortune app I made which randomly selects a student, while maintaining some suspense. Hilariously, some of them told me in office hours they were certain it was rigged to call on them, which worked to my advantage because it kept everyone on their toes whenever I pulled it up.

Unlocking Creativity with Skeleton Code and Visualization Software

For more programming oriented assignments, I like to fill in as much of the boilerplate and tedious code as possible, since I have noticed in lab settings that students often get stuck and frustrated at the beginning. One of many such examples is the first assignment in my digital 3D geometry class, in which I wrote all of the code for visualizing and listening to generated impulse responses, and the students simply needed to fill in the core geometry processing. This made the assignments more accessible to those with less programming experience, such as math students, while simultaneously enabling those more experienced to spend more time on creative aspects, such as the extra credit "art contests" (e.g. Image Sources, Laplacian Meshes, Iterative Closest Points). Also, some of the more engineering/computer science oriented students have remarked to me that the visualizations helped them to understand the math much better than they did before, as it was more "hands on." As an added bonus, all of my assignments were either in Javascript and hence easy for the students to share on the web, or I provided tools to help them generate visualizations.

Visual Lectures And Skeleton Slides

A picture is worth a thousand words, a few second video clip is worth hundreds of pictures, and an interactive app is worth an infinite number of videos. I exploit this hierarchy fully in my lectures. Wherever possible, I create interactive apps so the students can play around with mathematical ideas. Among these are the triangle circumcenter demo, the Euler Angles visualization app, and a principal component analysis viewer. Other times, it is more appropriate to make videos, such as my animations showing iterative closest points and animations showing the connection between Fourier analysis and rotation invariance. Moving forward, I am starting to experiment with interactive widgets in Jupyter notebook (such as my recent lecture on 0D homology), so that I can show students some of the nuts and bolts of numerical programming as I teach. This also allows me to easily code up and discuss ideas that the students have in real time. In the future, I am looking forward to using Observable, the Javascript analog to Jupyter notebook, so that after my courses end, my course materials involving interactive numerical programming can reach an even wider Internet audience that is not necessarily able to install and use Python.

Mentorship And Outreach

I have had a long tradition of STEM outreach, which is central to my identity as a researcher/teacher, and which I am looking forward to organizing more as a future faculty member. This started at the age of 15 at the summer camp "Fun with Math, Science, And Computers" at Temple University, where I was an assistant counselor (reference: Dan Creamer). I had been a student there myself for 7 years before I started in a mentorship role, and I looked up to the kids who knew how to code and who were ahead in math, and it made me want to learn more.

These days, I espouse the role of that big kid at the "STEAM" (Science, Technology, Engineering, Arts, and Math) program at Lakeland Elementary/Middle school in Baltimore (reference: Acacia Asbell), sponsored by Northrup Gruman. I am part of the "Cyber Patriot" team, in which we cover lots of material on cyber security and participate in bi-annual security competitions. Many students also stay for extra time after our CyberPatriots sessions, during which I teach them everything from "magic binary card tricks" to how to scan their heads with a Kinect and 3D print them. As evidence that the students are reacting how I did when I was a kid, they are now taking initiative in their own learning process and have asked me to teach them how to take computers apart and setup web/video game servers.