My research explores algorithmic methods for determining whether a pair of species are likely to have coevolved and, if so, finding the “best” scenarios that explain their evolutionary histories. This work explores the computational complexity of these reconciliation problems, seeks to develop efficient reconciliation algorithms where possible, and, ultimately, to implement these algorithms in practical tools for biologists and educators.
My current work focuses on support for critical literacy and efforts to foster new paths for equity in the sciences.
My computer science research career started during my college internship at Bell Laboratories in Murray Hill, New Jersey, during the early 1970s in the center that later produced UNIX and the portable C compiler. This experience taught me that computing was broader than the introduction to scientific programming in my undergraduate studies in applied math. (There was no computer science undergraduate major at the time.) For most of my career, I was interested in deriving descriptions of program execution behaviors from code in order, for example, to optimize program time and/or memory performance, to validate desirable properties such as correctness or data security, or to refactor code for ease of maintenance.
Increasingly, jobs rely on the ability to use computers to interpret, understand, and trust data. For example, my students and I have worked with ornithologists who cannot understand the representations of their bird sightings, civil engineers who cannot easily use their own building data, finance experts who cannot trace money between companies and their subsidiaries, and an XML document company whose clients cannot understand data that appears outside of their reports. In each case, the data users have been hampered because their data is exceedingly difficult to understand and trust, even though the users are experts in their fields. One reason for this difficulty is that the organization of the data is often designed for computers, not for people (i.e., for storage, not accessibility). Another reason is that data often come from different sources, leaving users with the challenge of integrating data that they neither understand nor trust.
Research shows that it takes 25 minutes to reach full productivity after an interruption, yet we are interrupted every 3 minutes. And even without external interruptions, our focus is fragmented. We look at any given desktop window for an average of only 40 seconds, constantly self-interrupting to check email or Facebook. We also try to complete multiple tasks at once, even though we all know that multitasking typically fails. Our tendency to be easily distracted kept our hunter-and-gatherer ancestors alive when they needed to attend to potential predators, but now, in the safety of our offices, it is amazing we manage to get anything done. Chances are you won’t even read this entire article in one go.
As a researcher, I am fascinated by the challenge of advancing the high-level foundations of computer software (programming models, compilers, and runtimes) to productively exploit the latest advances in computing systems. While there has been a long tradition of research in this area since the dawn of computing, the rapid evolution of hardware has continuously fueled a need for new software technologies as old approaches quickly become obsolete. Current explorations of new hardware directions that go beyond Moore’s law have further amplified the motivation for this research direction.
For the past 30 years I have had two passions – machine learning (ML) that makes a difference in the real world and increasing diversity in computer science (CS). For the first 26 years, I focused on my first passion and developed new approaches to ML though applications to remote sensing, neuroscience, digital libraries, astrophysics, content-based image retrieval of medical images, computational biology, chemistry, evidence-based medicine, detecting lesions in the MRIs of epilepsy patients, and predicting disease progression for MS patients. For the last four years, my focus has been on my second passion: increasing diversity in CS.
My research focuses on empowering individuals through computing technologies that more effectively match their knowledge, experience, abilities, and goals. The majority of my recent research has focused on accessibility-related issues. Working with my students, our research employs a broad definition of accessibility, seeking to empower individuals with disabilities as well as individuals who may experience challenges due to the environment in which they are using computing technologies.
What does it take to produce application code that performs as close as possible to a parallel architecture’s compute or memory peak performance? This question is one that programmers of high-performance architectures contemplate regularly since using such systems efficiently can solve problems faster, or solve larger or more complex problems.
This question fundamentally changes the approach to programming.
This year, CRA Board Chair Susan Davidson received the IEEE TCDE Impact Award for “expanding the reach of data engineering within scientific disciplines.” In this interview, Davidson reveals how her interest in bioinformatics came about and how her career led to this award. Two of her favorite problems have been data integration and data provenance.
I study how data and people interact. For more than a decade, I have been studying how to help humans access and manage information. While there is a lot of good work on human-computer interaction and on data visualization, much less work exists on “human-data interaction.” Why can anyone use Google to get information of interest while it is so difficult to get useful information from a structured database? The difference lies in the specificity of the request. A web search engine receives your request and tries to guess your intention. You know that it has a limited understanding of your need, and are happy to have it get you into “the zone,” from where you can explore for yourself. On the other hand, a traditional database query engine can give you complete answers to complex questions but requires that you precisely specify your query. If you make a small mistake, you are out of luck. Wouldn’t it be helpful to devise database query mechanisms that you can actually use and get reasonable results from even if you don’t ask it totally correctly? Complementarily, can the system help you ask a better question in the first place? Similar concerns also apply to the creation of a database, and helping users manage their data.
Over the 30 years since I began graduate school, my computer architecture research has explored many topics, but the ongoing theme has been attention to how technology and application trends and constraints influence hardware and system design, particularly at the hardware-software interface.
“What are computer users doing that is wasting their time?” This question guides my research. I construe computer systems research quite broadly; if I can build it, it’s a systems problem. This breadth has let me pursue questions in visualization as well as operating systems; machine learning and computer architecture; file systems, performance analysis, graph processing, databases, and numerous other areas. Some people might say I have a short attention span; I just like to claim that I have broad interests!
What value should a memory read return? The answer to this simple question is surprisingly complex for modern systems running parallel software. The memory consistency model, which governs this answer, is a fundamental part of the hardware-software interface, but has been one of the most challenging and contentious areas in parallel hardware and software specification. […]
The main focus of my recent research has been computer science education and the role computer science can play in defining and advancing its own education research. Learning computational principles and learning to code is hard, and teaching these subjects is even harder. For most computer science topics, we know very little about how different learners’ best learn; how to effectively teach the material to audiences with different abilities, backgrounds, and goals; and how to reliably assess learning.
Since I started graduate school in 1997, I have considered myself a member of the programming languages research community — and I continue to attend and publish in the annual conferences of this vibrant computing subfield. But over the last 5-10 years, I have also found myself increasingly passionate about opportunities for computing researchers to focus on ways to influence computing education beyond, for those of us who are academics, our own classrooms and independent studies. Let me share some of the projects I have enjoyed (seriously!) and others I wish I had more time to pursue.
My research revolves around tracking and understanding users’ emotional states and leveraging that information as additional context for the design of emotionally sentient systems. Some of the systems we have built have been designed for a user’s own personal reflection. Our first application, AffectAura, provided users with their own behavior patterns over time, such as what they were doing, where they were, who they were with and how they felt. This information could be used to make personal decisions about behavior change—if certain activities usually result in your feeling good or bad, perhaps you want to increase or decrease those behaviors.
My research involves understanding and facilitating the life cycle of cognitive software, which is substantially different than the life cycle of conventional software. This difference has profound implications for the methodology and tools required to build such software. Cognitive software possesses at least one “cognitive” or “intelligent” component, such as a component implemented using machine learning, neural networks, or rules. Multiple cognitive components will often be involved in a cognitive application or service, but even just one component is enough to impart special and challenging complications.
As CRA-W celebrates Women’s History Month, we decided to highlight a CRA-W board member who is a leader in the field of compilers and computer architecture – Kathryn McKinley. As both an academic (University of Texas at Austin) and industry employee (Microsoft), Kathryn has had the opportunity to broaden participation in computing across our community by spearheading programs that increase the number and success of women and underrepresented groups.
CRA is honored to have a prestigious group of computing researchers serve on its Board of Directors. These individuals volunteer their time to run CRA’s programs and committees and to develop and lead new initiatives. In this new series, CRA Board Member Profiles, we will highlight our board members and their contributions to the organization.
Greg Morrisett, Secretary of the CRA Board of Directors, is the Dean of Computing and Information Sciences (CIS) at Cornell University.
CRA is honored to have a prestigious group of computing researchers serve on its Board of Directors. These individuals volunteer their time to run CRA’s programs and committees and to develop and lead new initiatives. In this new series, CRA Board Member Profiles, we will highlight our board members and their contributions to the organization. Following is a profile on CRA Vice Chair Susanne Hambrusch.