Finding new challenges and pushing my limits has always been a passion that drives my decisions. This drive featured prominently in my decision to study computer science when declaring my major at Ball State University. After taking the initial three semesters of the computer science curriculum, the level of difficulty waned and the progression that had once provided education and challenge began to offer only tedium. Feeling stagnate and wanting to be more than a number in a class roster led me on a journey for a new school that concluded with Earlham College. A great sense of community, challenging classes, and working with the faculty provided a new and desirable level of difficulty and excitement. I wish to continue and escalate the challenge of learning computer science by joining a rewarding graduate program. My goal in continually breaching my boundaries is to one day learn enough to contribute in a new and useful way to computer science as a discipline.
Studying at the graduate level appeals to my sense of learning broadly. Ranging from studying and earning an undergraduate degree in sociology/anthropology from a very well-respected school in the field or exploring the theory and practice of jazz music, my interests in many areas has proven to be extremely valuable. Learning to make connections has been a beneficial result of a liberal arts education, broad learning, and personal ambition. Making connections between fields and using the knowledge gained in one arena to explore another has been a rewarding and useful skill. Two examples of my work in making connections are particularly relevant. First is my sociology/anthropology senior thesis that employs various metaphors (including dramaturgical analysis, and contemporary and classical theory) to explore, immerse, and predict everyday interactions. The thesis is essentially a connection between sociological theory and practice. The second example is an independent study of the underlying sociological forces and power structures of the open source movement. The results of this study illustrate how factors other than technical need advance open source software. Important considerations include factors such as what patches are accepted by which contributors, which personalities drive innovation in a project, and how economic and social pressures affect software development. These studies have proven useful by enriching my knowledge of both computer science and sociology.
In the process of personal learning, I have cultivated a passion for educating others. During the three years I spent at Earlham College, I worked in an applied computer science group that had a primary mission of improving the quality and effectiveness of education in the computer science department. My work in this Pedagogical Tools Group (http://www.cs.earlham.edu/~pedagogical/) ranged from the creation and implementation of labs used in the lower level courses to interesting research in load balancing. In addition to the satisfaction of helping others discover computer science, my experiences in this group helped in the production of a software package that shares a small set of Linux workstations with a large set of students running xservers on x86 or ppc hardware. This project involved modifying the XFree86 source to control the handling of indirect xdm queries to the small set of workstations while creating and maintaining a balanced load on those workstations. While the handling of the xdm queries was a solvable technical challenge, the notion of balancing many connections with a largely unpredictable workload was a less clear problem and required a lengthy, but fruitful, literary search. This work resulted in my first computer science publication and presentation at the Butler University Undergraduate Research Conference, and has benefited the computer science department by allowing a larger number of students to take part in computer science.
My experience in educating extends from working in the background preparing labs and pedagogical tools to working in the foreground as an active teaching assistant. The classes in which I have acted as a teaching assistant are Operating Systems, Database Systems, Networks and Networking, Parallel and Distributed Systems, and Principles of Computer Organization. While serving in a pedagogical capacity, I have experienced how teaching a subject can bring new depths of understanding to the teacher as well as the students.
Although I perform well in the traditional classroom setting, my most satisfying undergraduate work has been completed in the venue of independent research. One such valuable experience in independent research was my computer science senior project. Because of my personal enjoyment in creating visualizations in OpenGL and wanting to spend time on a project that would be useful to other people in the computer science community, I decided to create a wrapper around OpenGL that grants high dimensional rendering capabilities (http://www.cs.earlham.edu/~mccoyjo/project). The project involved an extensive literature search in the theory and practice of high dimensional rendering, implementing the wrapper, writing a detailed paper of my work, and presenting the results at a conference. The completion of this undertaking was as rewarding as it was challenging. Not only was the implementation completed, the paper written, and the presentation given, the project has proven enthralling enough for me to keep researching and adding new functionality to the wrapper. Currently I am working on generalizing clipping algorithms to work in the nth dimension to avoid the incorrect rendering that results when high dimensional visualizations are clipped by OpenGL at the third dimension. Please see the future work section of the paper on the project's website for more details.
Since earning my B.A. in both computer science and sociology/anthropology, I have been working in the Earlham College Cluster Computing Group (http://cluster.earlham.edu) as a full time member. My affiliation with this cluster computing research group began three years ago as a summer research opportunity and has since blossomed into a defining experience in my computer science career. Our first project consisted of benchmarking and tuning the GROMACS molecular dynamics package (http://www.gromacs.org) and culminated in a poster presented at the 2004 SIAM Conference on Computational Science and Engineering that won the "Best Poster" award. The group's work with GROMACS caught the attention of Pande Labs at Stanford University due to their of use GROMACS as the scientific core of Folding@Home (http://folding.stanford.edu). Due to similar interest, Pande Labs and our cluster computing group decided to work together on a high performance computing project called Folding@Clusters. The majority of my time in the last year has been devoted to this project. Not only has it been a useful experience in learning both parallel and distributed computing, but I have learned the valuable skill of working in a dedicated manner on a project for a long period of time.
Working on Folding@Clusters has granted me several opportunities to share the results of my work with the computer science community. Beyond the poster presentation at SIAM 2004, we attended Super Computing 2004 and gave a floor show on Folding@Clusters in conjunction with Purdue University. I also had a chance to share my technical skills gained from working closely with cluster computing at the 2004 Ohio Linuxfest (http://www.ohiolinux.org). A colleague and I gave an hour presentation geared toward cluster computing and a general overview of the molecular dynamics involved in Folding@Clusters. The other noteworthy contributions I will be working on include two presentations at SIAM 2005 and an article for the HPC issue of Dr. Dobbs magazine.