Master's of Science
Human Computer Interaction
This portfolio contains a list of projects that I work on over the course of my journey through graduate school. They are listed roughly in reverse chronological order. It is my wish that they checkpoint my growth as an academic, as a writer, and as a developer.
Renaissance is a functional shading language that solves a couple key problems in existing real-time shading systems. It has taken a semester and a summer to develop to a prototype state. The abstract follows.
We have developed a next-generation, functional shading language, called Renaissance, designed to address the problems of composability and scalability in real-time shader development. Based on a typed version of the lambda calculus, it uses computational frequency inference to automatically place computation at the optimally efficient stage of the graphics pipeline: the CPU, the vertex processor, or the fragment processor. Renaissance provides a framework for building shaders with constant switches that can conditionally compile in different shading algorithms, depending on the value of the flags. This puts shaders back on on the same level as the fixed function pipeline, in terms of orthogonality.
This thesis also provides a human factors analysis of the Renaissance language and system. We utilize the cognitive dimensions heuristic framework to provide a background for the human factors analysis. We have designed a usability study to qualitatively measure some usability aspects of the language and its runtime.
(Software to be released at a later date.)
GLScry is an OpenGL performance analysis tool. It provides a Python interface to a set of lower-level benchmarking operations and can generate graphs of the underlying hardware's performance. GLScry is released under an open source license and is available at the following locations.
For the final project of the HCI Ethics class, our team met with an officer at the Ames police department to learn about ethical and privacy issues in the 911 system. We wrote the paper below during the semester and presented it to the class.
ArtIS 409x/509x is an experimental "sandbox" class at Iowa State on game development. Teams are formed and given free reign to create a game. I managed a team of 14 programmers and artists on the game Empyrean, which we submitted to the Independent Games Festival in 2004. The game has not yet been released.
This class was an amalgamation of several very interesting areas in modern computer graphics by the master himself, Dirk Reiners. It mostly followed from the introductory OpenGL course. For the final project, I developed a couple new advanced techniques for our game Empyrean, also discussed above, including a vertex shader for animating trees and grass, a postprocess glow technique for the world, and particle systems that bounce off of world geometry.
Math 378 was a beautiful introduction into evolutionary algorithms and genetic programming, taught by the wonderful Dan Ashlock. For the final project, we developed a submarine warfare simulation with AIs that evolved the capabilities to steer with a rudder, fire torpedoes from both fore and aft, and use sonic pulses on nearby subs.
For little old newbie graduate student me, this class was a trip. We met for three hours once a week and read two or three advanced (and LONG) papers from human memory researchers. Then we'd have to write responses to each. Sooo much work, but I stuck with it and learned a lot about how academia works. My final paper was a survey paper on memory enhancement technology.
Carolina Cruz-Neira teaches this VR course. VR technology is surveyed and the students develop a VR application and write a paper about it. I wrote a magic carpet application that uses a DDR pad for navigation through the world.
Carolina also taught this introduction to HCI. Standard stuff like Fitt's law, layout and design, user and task analysis, Bryan Walter and I developed a universal remote control interface for a Palm m100 using J2ME.