Selected Projects

For my electrical engineering senior design project, we designed a system that hides digital information imperceptibly in audio. This information was recovered by a DSP with a microphone that captured the output of a speaker.

One of the projects for my computer graphics class (EECS 487 W11) was to write a raytracer and render an interesting scene.

The description from the course gallery says: I generated this animation of Newton's cradle with 50 separately raytraced scenes. I generated the scene files with a python script that simulated Newton's cradle, moved the camera, and controlled the moving "Go Blue" text in the background. Each frame has (24)^2 rays per pixel to generate a variety of effects, including area lights with soft shadows and motion blur. Using this many rays also helped smooth the image so successive frames looked better in sequence (early renderings had distracting artifacts where soft shadows appeared to flicker). It would have been impossible to generate this animation in the time allotted without some optimizations. Most importantly, I parallelized the raytracer so I could take advantage of my multiple processor cores. This made experimenting with different scenes much faster and also helped speed up the final render. The slowest part of rendering was almost certainly drawing the cradle, which was the only mesh in the scene. Adding a bounding sphere test and reducing the poly count dramatically improved rendering speed. This final animation was generated overnight (approx 7 hours) with 24 cores.

I am the author of an Android app that gives bus arrival times for the University of Michigan bus system.
Click here to see the app in the Google Play store.