I study our individual and collective struggle to understand computing and
harness it for play, power, equity, and justice.
I work with outstanding students and vibrant communities on this work,
publishing it in Computing Education,
Human-Computer Interaction, and
Software Engineering communities, and then blogging, presenting,
teaching, synthesizing, and
applying it in the world.
My active research projects are largely shaped by the postdocs and doctoral students in my lab and my active grants. My recent publications are a good guide to my current focus. I'm currently focused on
justice-centered computing education. This includes more equitable programmable media (particularly ๐ฌ๏ธ Wordplay, an accessible, multilingual educational programming language for creating
interactive typography), as well as equitable, justice-centered secondary CS
teacher education, including pathways and community.
I'm interested in any scholarly or community activity that advances
liberation in computing education (e.g., uniting equitable pathways to CS
education in the Pacific Northwest through CS for All Washington and PNW CS Teach and broadening
scholarly discourse by editing ACM TOCE and building infrastructure to sustain peer review through Reciprocal Reviews.)
Want to do research with me? Read about my lab, and
join us in creating a more equitable future of computing that includes
everyone.
Discoveries ๐
My lab and I have discovered many things since I started doing research in
1999. Here are some of the highlights from our work. How I describe these is
always evolving as we learn more.
It is possible to mine, transform, and synthesize interfaces to serve new use cases and users (2017 โ 2021) Reasoning about user interfaces in probabalistic and formal ways can enable new forms of accessibility and productivity.
UI miningtools ย ๐ฌ videoย ย ๐ฌ videoย ย ๐ฌ videoย ย ๐ฌ videoย ย ๐papers
Understanding machine learning means understanding uncertainty (2009 โ 2021) Tools can help, but even more so, using data and domains that people understand is even better.
AI educationstudiestools ย ๐papers
The tools and systems around programming languages are a primary source of learning difficulty (2000 โ 2021) Programming is hard for many reasons, but my work showed that it is also hard because tools, APIs, and IDEs make information about program behavior particulary difficulty to find.
programming systemsprogrammingstudies ย ๐papers
Software engineering expertise is technical, but also social, organizational, and political (2015 โ 2019) Across thousands of surveys and interviews, we found that expertise is far more than just knowing how to architect and build software.
expertisestudies ย ๐papers
Software engineering depends on information (2007 โ 2017) Through a series of studies, I unconvered the many ways that developers depend on information from people and systems to make engineering decisions, and how some of the most crucial information is hard or impossible to find.
teamsstudies ย ๐papers
Design skills depend greatly on domain expertise (2009 โ 2015) We found through several studies that designers' productivity and careers are often limited by their lack of domain expertise.
designstudies ย ๐papers
Programs can answer questions about their behavior (2004 โ 2015) I invented tools and algorithms for deriving 'why' and 'why not' questions from programs and automatically answering those questions, helping people efficiently and interactively debug the root causes of program failures.
debuggingtools ย ๐ฌ videoย ย ๐ฌ videoย ย ๐ฌ videoย ย {}
ย code ย ๐papers
Some defects can be found by operationalizing principles of human communication (2010 โ 2014) Many defects in dynamically typed programs can be found by operationalizing simple observations about how people write code, often forgetting to close the loop that statically typed programs can easily point out.
verificationtools ย ๐ฅ๏ธ demo ย {}
ย code ย ๐papers
Finding help with software can be as simple as pointing (2006 โ 2013) Pointing to user interface elements can be a powerfully discrminating input into help retrieval algorithms.
helptools ย ๐ฌ videoย ย ๐ฌ videoย ย ๐ฌ videoย ย ๐ฅ๏ธ demo ย {}
ย code ย ๐papers
Text-based code editors can be richly interactive (2005 โ 2006) The structured editors of the 1980's were hard to build and use; I invented ways of making both easier by viewing programs as user interfaces, not documents.
editorsprogrammingtools ย ๐ฌ videoย ย ๐papers
Defects emerge from the interaction of satisficing and state space complexity (2003 โ 2006) Much of my work during my dissertation examined where software failures come from; cognitive slips interact with the large state space that people create when programming to generate defects that are hard to localize.
errorsstudies ย ๐papers
Last updated 8/16/2024. To the extent
possible under law,
Amy J. Ko
has waived all copyright and related or neighboring rights to the design
and implementation of
Amy's faculty site. This work is
published from the
United States. See this site's GitHub repository to view source and provide feedback.