I am a grad student at the University of Washington, pursuing a PhD in Computer Science and Engineering. My research interests include exploring programming models, languages, and compilers for the purposes of exposing, expressing, and exploiting parallelism. My research is done as part of the Computer Architecture group at UW (Sampa), with co-advisors Luis Ceze, Dan Grossman, and Mark Oskin. I graduated with a Bachelor's of Science from the University of Wisconsin - Eau Claire, with a comprehensive major in Computer Science and a second major in Physics and Astronomy. Research InterestsI am not satisfied with the current tools for developing software for the heterogeneous, parallel architectures that will soon be ubiquitous. As processor architectures accrue more cores and specialized hardware such as GPUs, we will soon spend more time learning parallel tools and translating algorithms for each specific architecture than actually designing novel applications. In an effort to avoid that, I am interested in helping design the next generation of languages and compilers that will enable efficient high-level development of parallel programs. The unique challenge of thinking in various parallel paradigms interests me, so I am always exploring new tools and trying to learn new ways of thinking about programming. I also enjoy every opportunity I find to avoid doing repetitive, systematic work and instead develop scripts to do everything I can automatically. Many tasks involved in writing parallel programs right now could be extracted and optimized automatically by compilers, either statically or dynamically, given the right information.
Therefore, exploring parallel design patterns, designing languages, and developing compilers that can optimize parallel code automatically all greatly appeal to me. I am contributing to these projects that are both imperative for future software development and particularly interesting to me. ExperienceDue to my passion for all things Computer Science (well, nearly all), I have played around with many different technologies, frameworks, languages, etc. I won't list off a number languages that I've worked with here, both because I frankly cannot remember all of them and because it would do no one any good. Programming languages are not like natural languages: they actually make sense and normally follow the rules. Programming languages are inherently unambiguous, all contain many of the same constructs, and are engineered to be as utilitarian as possible to use (the good ones at any rate). Any computer scientist ought to be able to pick up and apply whatever language best suits their project (or is dictated by their superiors). Recently I have been very interested in compiler technology, so I have been playing with the Low Level Virtual Machine (LLVM) infrastructure, which allows you to create your own languages and actually compile and execute them reasonably painlessly (of course LLVM is way more powerful than that and allows for many other exciting things in language design such as faster compiles and platform agnostic intermediate representations). I've also played around with Numenta, a framework for "intelligent" computing technology based on Jeff Hawkins's model of the human neocortex in his book On Intelligence. I am also very fascinated by scripting languages such as Python and Ruby and how they achieve many of the same goals with quite different ideologies. PersonalDespite appearances, in addition to locking myself up in a room coding all day, I do other things as well. I enjoy soccer, ultimate frisbee, disc golf, reading, and watching The Big Bang Theory. I believe in having a personal relationship with Christ, attend services at University Lutheran Church and First Lutheran Church. I also enjoy being involved in the Lutheran Student Association at UW-Eau Claire and serving locally at The Community Table. |
