|
|
|
Andrew J. Ko Assistant Professor Box 352840 Seattle, WA 98195
206-221-0352 Interested in a Ph.D. in HCI or software engineering? Apply to the iSchool or CSE and work with me as part of dub! If you're already a student at UW, let's chat. 09.22.09 presented Attitudes in Young Adults' Computing Autobiographies06.29.09 VL/HCC paper on code autobiographies to appear05.30.09 FSE paper rejected for using qualitative methods05.23.09 presented The State of the Art in EUSE at SEEUP05.15.09 presented to the iSchool founding board01.15.09 my CHI '09 paper was accepted.11.05.08 I gave a talk at DUB.09.16.08 I am now faculty at UW. Come do research with me!05.10.08 I've posted the 05.08.08 I submitted my dissertation!04.15.08 I'm finally back in Pittsburgh, takin' it easy, writing a few journal papers :)03.16.08 My Whyline for Java paper won distinguished paper award at ICSE 2008!02.28.08 read L'Sociopath01.28.08 posted the ICSE '08 Whyline paper01.8.08 peering through panels01.6.08 parity12.29.07 read road11.13.07 finished misadventure 10108.15.07 finished the whole is elucidated08.07.07 poetry by yours, (truly!)07.25.07 wow, it's been a while. i've been a bit bookish lately, reading Sophie's World and No Country for Old Men.06.12.07 finished a chilling killing05.29.07 Finished Flowers for Algernon.05.25.07 Posted slides for my ICSE 2007 talk.05.21.07 Finished Wharton's Summer.05.11.07 Ellen did a wonderful job at her first violin recital!05.06.07 Yay! New colors.05.06.07 Finished Pride and Prejudice.05.04.07 Added a collection of Ellen quotes.04.29.07 Reorganized reading page chronologically and hid the comments until a mouse over. Added a comment on Fausto-Sterling.04.28.07 Yes, animation can be annoying. But I needed an excuse to play with Javascript. You can put up with it for a while.04.26.07 The fifty first state04.20.07 Comments on My Mortal Enemy and yay for sepia! 04.12.07 Comments on Frankenstein and new fwf entry. 04.04.07 Posted comments L'Engle's Wrinkle. 03.06.07 Remembered a bunch of books I read!03.02.07 Added page about fwf02.27.07 finished Dubliners02.26.07 musing: dying02.24.07 musing: war and sacrifice02.18.07 finished Slaughterhouse-Five02.15.07 added some summaries to reading list02.12.07 posted EUSE SIG for CHI 0702.09.07 added Ackerman quote02.08.07 musing: race me01.27.07 musing: mediated living01.06.07 bit of a site redesign |
Andrew J. Ko ajko @ uw . edu
I'm an assistant professor at the Information School at the University of Washington. I am also a core member of the dub group, our cross-campus human-computer interaction research and education coalition.
As a researcher and teacher, I'm fascinated by software. I'm intrigued with how it's built, the people who build it, and its far reaching effects on society. I study beginners, end-user programmers, and professionals with lab studies, classroom, corporate field work, and artifact analysis. I use the results to invent tools that better support the design, creation and repair of usable and useful software.
I'm interested in ...
Usability 2.0. How can 1,000,000 users communicate problems to 100 designers in a mutually beneficial way? Tech support isn't the answer and user testing doesn't scale. We're inventing help tools that incentivize user feedback at a massive scale, and creating tools that aggregate and visualize this feedback to support design and bug triage decisions.
User feedback in open source. Most OSS projects are driven by a small core of active contributors and a much larger group of less frequent contributors. We're studying the value that this latter group brings and investigating ways to increase it.
Playing with code. Too many programming languages, even those designed for beginners, make code sterile, cryptic, and fragile. We're making code something that people can play with, exploring tools and languages that help people explore and ideate in the medium of code.
My older work, which focuses on a range of human issues in software development, appears below. recent projectsThe Whyline for Java lets you point to program output and ask a 'why' question, then get an explanation than pinpoints the answer.
Information Needs in Co-located Software Development Teams. What kinds of information do software developers look for on a minute-by-minute basis? Rob DeLine (MSR) and I spent a summer hanging out in software developers' offices and took extensive notes on the information they were looking for. They spend a lot of time staying aware of their teammates' activities as well as seeking design rationale (but never finding).
ToolsThese are technologies that I'm no longer actively working on. If something here seems interesting, however, drop me a line. I'm always open to new perspectives on past work. Crystal. Ever wonder why your software is doing something strange? Crystal is an automatic, contextual help tool that lets you click on confusing output and ask 'why' questions.
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.
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.
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.
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.
Studies
The Linguistics of Problem Reports. Are there linguistic trends in people's descriptions of software problems? To find out, we analyzed nearly 200,000 open source bug reports, specifically studying their one-line summaries.
Bottlenecks in Software Maintenance Tasks. We studied several expert Java programmers using Eclipse to fix bugs and add features to a painting application. The study identified several trends in these activities, including that developer's spent an average of 35% of their time scrolling within files and switching between files, to code they had already seen but needed to reference again. If you're curious, you can view the source code for the Paint application used in the study.
Text Editing Strategies in Code Editors. How do programmers edit textual code (as opposed to visual or otherwise)? We did a fine grained analysis of several programmers character-by-character edits, finding that programmers generally preserve the syntactic integrity of their code. Almost all edits, however, require them to pass through some syntactically invalid state momentarily.
Learning Barriers in Visual Basic.NET We studied a classroom full of non-programmers attempting to learn Visual Basic.NET and found that, while many barriers were difficulty with syntax errors, many others had to do with searching for, using, coordinating, and debugging uses of abstractions in APIs. We identified many ways that programming environments might lower or remove these barriers.
What causes people to insert errors in code? Traditional perspectives blame the programmers or the languages. We observed and documented groups developing interactive 3D simulations, the errors introduced into their code, and their efforts to find and repair these errors. About half of the errors introduced occurred as a result of efforts to repair other errors that were based on these false assumptions.
|