My freshmen and sophomore years of high school were at Myers Park High School in Charlotte, NC. Then I went to The North Carolina School of Science and Mathematics for my junior and senior year. This is an amazing state-funded, residential high school focusing (unsurprisingly) on science and math for Juniors and Seniors. While there I worked with Mary Whitton at the Virtual Reality group at UNC Chapel Hill under a mentorship program where I learned a lot about the research process. My undergraduate education was done at The California Institute of Technology where I received a B.S. in Computer Science. While at Caltech I had a lot of fun working under Peter Schroder and Mathieu Desbrun in the Applied Geometry Lab, where I worked on some very interesting geometry problems. Currently I am a graduate student at Stanford University under Pat Hanrahan. I enjoy teaching.
As an undergraduate at Caltech I was the head teaching assistant for CS156a, Learning Systems, and CS156b, Projects in Learning Systems, both under Yaser Abu-Mostafa. Yaser is an excellent teacher and I enjoyed all the classes I took with him.
In graduate school I TAed CS148, Introduction to Computer Graphics and Imaging. The first time I TAed was Winter 2008 (course website) under my advisor, Patrick Hanrahan. I TAed the class again in the summer of 2008 (course website) when another graduate student in Pat's group was teaching. In the summer of 2009 I taught the same class (generally a graduate student teaches each summer) where I modeled the class after Patrick Hanrahan's version. All the lectures and assignments can be found here .
I spent three summers as an intern for Microsoft Corporation in Seattle. I learned most of what I know about professional software development while there and it greatly improved my coding style at my ability to work with other coders on large projects. I worked almost exclusively on the Windows code base, which is one of the largest pieces of software ever written. It was a lot of fun to look around the code and see how it all (sort of) fits together. All three summers were spent working with the DirectX Kernel team, which was very interesting because lots of my work was in kernel mode, which I had never had a chance to work with during my undergrad education. While at Microsoft I worked under Steve Pronovost and Roger Coote on the video memory manager. The most used application I wrote with Steve was called GPUView, which is used to understand the performance interaction between the operating system, the graphics applications on your computer, the graphics kernel, and the graphics driver. This turned out to be a very useful application and is still widely used today to debug performance bottlenecks in the graphics pipeline. We published a patent on the techniques used, Kernel Event Visualization. I also worked with Roger on a project called SoftGPU, which is a purely software kernel graphics driver. It can be useful for testing new features before Microsoft sends out a new revision of the graphics kernel to ATI, NVidia, and Intel.
Places I've Lived
Awards, Fellowships, etc.