The Cognitive Complexity of Code
I am working with Andrew Lumsdaine and Rob Goldstone to quanitify the cognitive complexity of code. A great deal of research has been done on program comprehension, but results are largely qualitative.
We would like to develop a computation cognitive model of a programmer that can "read" simple programs and guess their output. With such a model, we could predict how complex a program appears to a programmer by feeding it code and measuring aspects of the model's behavior (e.g., speed and correctness). Programmers of different experience levels could be simulated by having models with different long-term memory contents, such as schemas for common operations.
Our Onward! workshop paper describes the grand vision. We have a paper available on arXiv with experimental results. You can also read about our recent eye-tracking experiment, which we're in the process of writing up.
Covert Communication on Android
Raquel Hill, Seth Wimberly, and I investigated the properties of several covert channels on the Android platform for smartphones (paper Bibtex). First identified by Schlegal et. al in their Soundcomber paper, these channels allow applications to share information in a potentially undetectable manner (i.e. one application changes the volume setting while another application reads it at a known interval).
We designed a simple system to detect covert communication over channels that does not require permission from the user at install-time. In addition, we are measured the bandwidth and error-rate of each channel in the presence of various kinds of system noise.
Transfer Entropy and Rat Cortical Networks
John Beggs and Shinya Ito have developed fast algorithms for computing standard and extended versions of Thomas Schreiber's transfer entropy. I collaborated with them to optimize these algorithms as well as analyze their time complexities (link to publication).
Together, our efforts have resulted in the Transfer Entropy Toolbox, a collection of MATLAB and C++ tools that will allow researchers to compute effective connectivity for hundreds of neurons and hours worth of data using a standard desktop computer.
We plan to apply knowledge gained from using transfer entropy on simulated networks to analyze actual recordings from hundreds of rat cortical neurons.
Pixel: Collaborative Digital Art
Rob Goldstone and I developed a game called Pixel that allows a dozen or so players to collectively create a picture on a shared black and white grid.
Each player has a unique avatar like or and they are allowed to toggle the grid cells with their avatar using a remote control. The group as whole is given a single goal like "Draw a Circle" or "Draw Either the Letter C or the Letter E". A round is over when no changes to the grid have been made for 15 seconds.
We have run experiments for a variety of conditions which vary the type of goal (simple vs. conjunctive) and how players are assigned grid cells (random, clustered, anti-clustered). By reserving certain grid cells, we have also created a version of the game where players find solutions to the Travelling Salesman Problem.
Flatland: Sorting, Panic, N-Queens, Predator/Prey
I worked with Rob Goldstone to develop a general purpose, 2-D game for researching group tasks in a variety of domains. In Flatland, players move avatars on a grid world using a Nintendo Wii® Remote.
Many different settings are available such as grouping players into teams, placing obstacles on the game board, making the world toroidal (i.e., wrap around), disallowing players from occupying the same grid cell, and designating some players as "predators" who can capture "prey" players.
We have used Flatland to model a variety of group task domains including sorting (by color, team name, etc.), panic scenarios (i.e., obstacles are present and someone yells "fire!"), the N-Queens problem, and a handful of predator/prey scenarios.