andrew ko

In the fall, I'll be an Assistant Professor at the Information School at the University of Washington. I received my Ph.D. from the HCI Institute at Carnegie Mellon, working with Brad Myers. My research interests center around my fascination with software. I'm intrigued by how it's built and the people who build it, and its far reaching effects on society. In my Ph.D. research, I sought to:

  • Explain why people have difficulty understanding computer programs
  • Invent technologies that minimize this difficulty.

Sometimes I study people in the lab and have them work on tasks that I've designed; other times I observe developers in the field; I also gather code and other software artifacts to look for patterns. I tend to focus on professional developers, but I also study end-user programmers, who write programs to support their work (unlike professionals, who write programs for pay).

Projects

I've worked on a number of technologies during my Ph.D., which I summarize below. You can find more details at the Natural Programming site.

The Whyline for Java is version of the Whyline that supports Java programs with textual and graphical output. Just like the Whyline for Alice, it supports why did and why didn't questions about output. More info soon!
The Whyline for Alice is a debugging tool that allows developers to ask why and why not questions about their program's output. The prototype that I wrote for Alice helped developers solve problems a factor of 8 times faster than conventional tools.
Jasper is a workspace for gathering task relevant code fragments during software maintenance tasks. Its motivated by findings from one of my studies that showed that most of what developers do during such tasks is navigate between relevant code.
Barista is a toolkit for creating flexible structured code editors. The key different between Barista editors and prior structured editors is that they use standard text editing interaction techniques, but a structured visual representation.
Crystal is a toolkit for supporting why questions about desktop applications. We prototyped a word processor that allows you to ask questions such as, "Why was this word auto-capitalized?" and "Why isn't this bold?"
Slate is a spreadsheet language with a novel labeling system. Users give labels to data and the data is propagated through formulas, causing unexpected combinations of labels in the presence of errors.
Citrus is a novel programming language that supports one way constraints, events, value restrictions, and object ownership. I used Citrus to implement the Barista toolkit above and lots of other prototype user interfaces.

short biography

Andrew Ko is a Ph.D. candidate at the Human-Computer Interaction Institute at Carnegie Mellon University's School of Computer Science, working with professor Brad Myers. His research interests include social and cognitive factors in software engineering, end user software engineering, user interface software and technology, and programming language design. He has published articles in all of these areas, receiving best paper awards at top conferences such as the International Conference on Software Engineering (ICSE) and the ACM Conference on Human Factors in Computing (CHI), as well as extensive press on the Whyline, a novel debugging tool that supports questions about program output. In 2004, he was also awarded both NSF and NDSEG research fellowships in support of his Ph.D. research. He received Honors BS degrees in Computer Science and Psychology from Oregon State University in 2002.

fellow students

I share an advisor with some cool guys. Chris Scaffidi does software engineering research and studies ways of helping people take better advantage of their data (topes). Jeff Stylos studies API usability. Thomas LaToza studies how developers understand complex software understanding activities.