CHI '12
ICSE '12
VL/HCC '12
UIST '12
ICER '12

Andrew J. Ko

Assistant Professor

The Information School

University of Washington

Box 352840

Seattle, WA 98195








206-221-0352

ajko | @ | uw | edu

Mary Gates Hall 330G

Winter 2012 office hours are Mondays 4-5

Interested in research? Please read this before you write.

Andrew J. Ko ajko @ uw . edu  

I'm an assistant professor at the University of Washington Information School, a member of the dub group for HCI and design, and director of the USE research group. I'm fascinated by people's struggle with our increasingly software-based world; I focus this curiosity on inventing ways for people understand software behavior, whether they are debugging code, learning to program, or simply struggling to use a software system. My interests are in human-computer interaction, computing education, and software engineering.

Below are most of the projects I've worked on in my career.

show all

there's nothing left to show
LemonAid helps you find software help in a single click. Querying by user interface selection is better than querying with text because people with similar problems choose similar things.
help invention
What information needs arise in feasibility assessments? Finds that developers need not only code examples, but mappings between the standards and concepts used in an API and the API's instantiation of them.
learning help discovery
Does the phrasing of programming tool feedback affect novice programmer engagement? Finds that personifying programming tool feedback (e.g., error messages) increases success in a game that teaches programming.
bugs learning invention discovery
FeedLack finds scenarios where web applications ignore user input.
usability bugs invention
How representative are beta testers? Finds that Windows beta testing populations are not representative of post-release populations, with respect to crashes, hangs, and blue screens. Shows how to use k-means clustering to correct for the bias.
bugs discovery
The state of the art in end-user software engineering. Reports on the past two decades of research on making end users' programs more reliable through software engineering techniques.
review programming
Post-deployment usability survey. Finds that usability professionals are currently not playing a substantial role after software is deployed, but when they do they find their interactions with support teams quite valuable.
discovery usability
What constrains software change? Finds that conflicts between users' heterogeneous use of information and inflexible assumptions in a team's software architecture make change infeasble.
bugs usability discovery
Cleanroom finds a wide range of defects in HTML/CSS/JavaScript applications by looking for identifiers that only appear once. See the demo!
bugs invention programming best paper
Is the openness in open bug reporting important? Finds that reports from non-developers were support requests, redundant reports, or niche feature requests and that the value of open bug reporting is in recruiting talented developers, and less in extracting value from the masses.
programming bugs best paper
The Whyline for Java lets you point to program output and ask a 'why' question, then get an explanation that pinpoints the answer.
bugs invention best paper
Crystal. Ever wonder why your software is doing something strange? Crystal is an automatic help tool that lets you click on confusing output and ask 'why' questions, getting answers in terms of user interface controls that caused the behavior.
help invention
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.
programming invention
Jasper is a workspace for gathering task-relevant code 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.
programming invention
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.
programming bugs invention
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.
programming invention
What barriers to programming environments pose to learning? Finds six classes of barriers, distilled from a series of classroom observations about students learning of Visual Basic.NET.
programming learning help
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 8 times faster than normal tools.
bugs invention