I'm a fourth-year computer science and mathematics double major, working on software transactional memory systems in a group led by Professors Michael Scott and Sandhya Dwarkadas. Our goal is to simplify the task of writing parallel programs. All of the major CPU manufacturers have introduced processors with multiple independent processing units, and these are starting to appear in both new computers and game consoles. Unfortunately, writing good parallel programs with locks and other traditional synchronization techniques is still something of a black art. As more and more programmers are called upon to write parallel code, we hope that transactional memory systems, which promise both ease of use and high performance, will alleviate the difficulty.
At Rochester, we have been building a system called RSTM (Rochester Software Transactional Memory) that implements a transactional memory programming model in software. For development, we have been using two multiprocessor SunFire machines donated by Sun Microsystems. I have been primarily responsible for benchmarks and programmer usability. As RSTM stabilizes, I have put more of my time into building tools to make it even easier to use. For various reasons, converting sequential codes to use RSTM is a somewhat tedious process. My primary focus at the moment is my senior project, for which I am building a source-to-source compiler that recognizes language extensions for transactional memory.
Though my present research focus is in systems, I maintain an active interest in theoretical computer science as well. Working for Professor Lane Hemaspaandra, I discovered a way to eliminate some special cases from the proof of a computational complexity result due to Buhrman, Torenvliet, and van Emde Boas (Technical Report 883). With some collaborators at Yale University, I have been studying the power of population protocols, a restricted model of distributed computation, which has led to a conference paper and another paper in submission. In addition, I spent two summers working on problems in combinatorics at NSF REU programs at Lafayette College and Iowa State University, resulting in a journal publication and several submissions.
Like many computer scientists, I am an avid amateur musician. I sang bass in Chamber Singers for six semesters, a chamber choir conducted by L. Brett Scott. As I graduate from Rochester, I will have taken six courses in music theory, including two at the nearby Eastman School of Music. Sometimes I mix my interests, as I did when I attended David Cope's first Workshop on Algorithmic Composition of Music, where I wrote a Lisp program that can write first-species counterpoint as well as many beginning music theory students.
David's Honors Thesis: Two Interfaces to the RSTM Transactional Memory System