Research

I build tools to support my cross-disciplinary study of programmers, and I study their use in the practice of programming across disciplinary boundaries.

My work is fundamentally human-centered, and is currently best broken down into work regarding the behavior of novice programmers and the design and development of tools to support parallel programming in small, embedded spaces.

Novice Programming Behavior

edit-compileI am interested in how novices use programming tools. Currently, along with colleagues at the Ateneo de Manila and Worcester Polytechnic, we are exploring the behavior of novice programmers as they wrestle with the challenging task of writing syntactically correct programs. We have begun to link their behavior to affect, and hope to develop tools to better support teachers and students learning to program. 

Parallel Languages for Embedded Control

transterpreterWe need usable, expressive languages to support programmers in safely handling the multitude of inputs and outputs of embedded systems. 

Through the Transterpreter project, we are working to develop small (10K), portable, efficient runtimes for expressing parallel languages for embedded control. Our efforts began with the virtual machine (for portability), and now we are beginning to explore questions of usable parallel language design.

My work on novice programmers informs our work on the design and implementation of usable tools for beginners. Fortunately for us, in the realm of parallel languages, the vast majority of programmers are novices.