Vibha Sazawal
Clare Boothe Luce Assistant Professor
HCIL, Department of Computer Science and UMIACS
4113 A.V. Williams
University of Maryland, College Park
Research area: HCI and software design


Who am I? Students Research Teaching Diversity Personal Info


Who am I?

I am a computer scientist. As CMU professor Peter Lee described, computer science is a field full of grand challenges, primarily focused upon expanding intelligence and expression. To learn more about ``the mystery of our intelligence,'' check out The Computational Universe. To learn more about expanding our ability to express ourselves, check out Media Computation.

And how exactly do I fit into all of this? I expand intelligence and expression through better software design and tools. Software design is the blueprint, the magic structures that we use to create and re-create the systems that do our bidding. And since people are hard at work today designing and evolving these magic structures, I study ways to help them with that work. I am also interested in helping other information workers with their work using software tools.

Humans build software, so I can't care about software tools without caring about human-computer interaction. Many people think HCI is about helping people use computers, and I agree. But we are fast moving towards a future in which empowerment comes not just from using a computer, but from being able to write computer programs. I want to avoid a future where the "haves" can write programs to analyze information feeds and customize their software-based processes, while the "have nots" must rely on information and applications given to them by others.

I believe computer programming is as essential as arithmetic. I seek to build programming tools for everyone, so that everyone can feel the empowerment that comes from being able to program a computer.


Students

I have the honor of working with some of Maryland's best students! Get to know this creative, hard-working, intelligent crew.


Research

I am a member of the Human-Computer Interaction Laboratory (HCIL), which is part of UMIACS. My research lab, the HCIL UX lab, is in 3452 A.V. Williams.

Novice programming environments

To achieve the goal of programming access for everyone, we need to accommodate all types of learning styles and interests. I have two projects underway that teach children how to program using tangible objects and sound. We are targeting kinaesthetic, audio, and social learning styles. Papers:

Economic-based approaches to plan software evolution

Once everybody can program, everyone will have to deal with legacy code! Unfortunately, even professional software engineering teams face challenges when evolving their software. Decisions about whether to refactor or not lie at every turn. We apply game theory to the problem. By modeling software evolution as a game between the programmer and the user, we give both parties a voice in how software evolves. Papers:
User-centered static analysis tools
Static analysis tools help programmers find errors. If everyone will be programming, then everyone needs static analysis tools. Unfortunately, many sophisticated tools provide output that require a PhD to understand! We want to fix this. Papers:
Extending programming languages with more expressive concepts
For many programmers, the programming language is the first "software engineering tool" they see. By adding features to languages we can support more intuitive styles of programming.
Expert recommendation
When a programmer faces unfamiliar code, who should they contact for help? I am interested in integrating work in social networks and mining software repositories to answer this question.
Information-hiding URLs
Many common elements of URLs do not adhere to the principle of information hiding. For example, filename extensions and parameter names can reveal volatile implementation details. As a result, when website implementations change, links between pages break. Bookmarks and code that generates URLs often break as well. An information-hiding URL uses an alias to identify a web resource and appends parameter values into the hierarchical structure of the URL. If a programmer follows certain conventions, such as providing default values for parameters, a link defined using an information-hiding URL will not break even if certain details about the page have changed.

Papers:

Design Snippets:
Design snippets are partial design representations that are extracted from source code. These design representations are intended to help software engineers make design decisions during software evolution and maintenance tasks. Design snippets are co-displayed in the context of units of code (e.g., files); by eliding design details unrelated to the unit of interest, design snippets can be effectively used by software engineers as they view and edit units of code.

Design snippets are intended to support specific software design principles. My prototype, the Design Snippets Tool, focuses on design principles related to one important software property: ease of change.

Papers:

ArchJava:

ArchJava, a project led by Jonathan Aldrich, also connects code to software design decisions. ArchJava is an extension of Java that offers additional expressive power for describing and checking architectural constraints. From an ease-of-change perspective, ArchJava provides connectors, an exciting new way to think about and describe interfaces between modules.

Papers:


Teaching


Diversity

I am also strongly interested in computer science education and K-12 math and science education. One of my particular concerns is the lack of women in computer science. In 2004, I created and taught the course ENGR199B, "Women, Computing, and Collaborating." I have also worked in K-12 schools to spark interest in mathematics and computer science, especially among underrepresented groups.

Links:


Personal

I was born and raised in Pennsylvania. I don't have much free time, but I like to spend it hassling my husband Vijay Ravindran, my family, and my friends. My husband and I like to travel when we can.

vibha at cs dot umd dot edu