My research is focused on software engineering for context-aware applications designed for use in pervasive computing environments, where dynamically formed wireless connections support interaction with computing devices embedded into everyday objects. The ultimate goal of my work is to simplify the programming tasks associated with designing and developing applications for pervasive computing and to promote rapid software development. Projects include:

Crowdsensing:Embracing best practices for and simplifying creation of participatory sensing applications

Participatory sensing involves the general public in collecting and sharing information about the surrounding environment through the use of sensing (e.g., camera, GPS, accelerometer) and input capabilities on their handheld mobile devices. While participatory sensing holds promise for enabling large-scale data collection by citizen scientists, the need to develop a mobile application is a barrier to adoption of participatory sensing; many organizers of data collection campaigns have extensive domain knowledge,but do not necessarily have the skills required to develop robust software for participatory sensing. We have developed a toolkit that will support creation of participatory sensing applications by campaign organizers; using the toolkit’s graphical user interface, an organizer can define a campaign, distribute the mobile application to participants, monitor the campaign's progress, and analyze the results of contributions, without writing a single line of code. Use of the toolkit results in mobile applications that embrace emerging best practices for successful participatory sensing campaigns. Our evaluation demonstrates that toolkit simplifies the development and deployment of participatory sensing applications that are functionally equivalent to custom-built software systems. We hypothesize that such a toolkit can result in the creation of participatory sensing campaigns that collect larger quantities of scientific data and higher quality data in comparison to existing methods of constructing participatory sensing applications.


Gander: A search engine for dynamic pervasive computing networks

In pervasive computing environments, people carry or wear mobile devices that  form opportunistic connections to each other and to information and services  embedded in the environment. The state of the digital representation of this world can have a great impact on the behavior of users and applications; the need to  know what is happening around me, here and now, is critical in pervasive computing spaces. As this style of computing moves closer to reality, users require mechanisms to help them find the information they need as they move through the densely populated and rapidly changing information space. The tight integration of the user with the immediate physical and social environment introduces new search requirements. Users in pervasive computing spaces need information that is immediate and localized. To address these needs, we introduce Gander—a personalized search engine for the here and now. Gander is founded on a novel conceptual model of search in pervasive computing spaces and targeted for environments characterized by large volumes of highly transient data. Gander takes a radical departure from traditional internet search, instead using spatiotemporal protocols to search the immediate surrounds on demand, without advance indexing.  To our knowledge, Gander is the first search engine for spatiotemporal search of the here and now, in the here and now. 


Query Fidelity: Formal semantics of query processing in dynamic pervasive computing environments

Defining guarantees for queries issued in pervasive computing environments can lead to the development of new applications. Previous work on providing query execution guarantees in dynamically formed wireless networks has mostly focused on the weak and strong transactional semantics commonly used in distributed systems. However, our project takes the stance that there is a range of query semantics lying between the extremes that can we useful in to applications that operate in dynamic pervasive computing settings such as mobile ad hoc and sensor networks. In preliminary work, we have discovered such intermediate guarantees and have begun to explore how to formalize the fidelity of query operations issued over such pervasive computing networks. The provision of a range of fidelity semantics could result in supporting the development of applications whose needs cannot be realized given the current options. The impact of this work is not limited to query-centric middleware, but can be applied to a wide range of systems that utilize queries in environments such as mobile ad hoc and sensor networks.


GameChanger: Promoting Health and Well-Being with Social Exergames

GameChanger is an innovative project to create mobile and Kinect exergames to promote health and wellbeing. The primary objective of this research is to create prototypes for a new generation of social exergames that interweave physical activity as a core game mechanic with social elements such as competition and collaboration to motivate long-term adherence to physical activity. The net result of this work will be the a representative suite of social exergames that have been implemented, iteratively refined, and empirically evaluated. GameChanger prototypes will be designed as platforms for experimentation to determine which combinations of social and physical elements have the greatest impact on the physical activity.


Middleware: Programming support for context-aware applications

Context-aware application development can be simplified by the use of abstractions that hide the complex tasks of interacting with context distributed across an ad hoc network. Constructing context-aware applications for use in ad hoc networks is not an easy task; the collection and use of context information distributed across a constantly changing network remains a significant technical challenge. To facilitate the rapid development of context-aware applications, I have recently introduced a query-centric approach to supporting context interaction that allows an application developer to view the surrounding environment as a single data repository over which content-based queries can be issued. The use of such an abstraction allows the developer to interact with a distributed context as if it were local. A key feature of the query-centric middleware system is that it offers a high degree of flexibility, providing the developer with fine-grained control over the propagation and execution of the query. Solutions to the fundamental tasks associated with context-aware application development should be encapsulated and reused. Often, the set of most basic tasks required to collect context information from the environment are replicated in many context-aware applications or middleware systems that support context-aware development. In earlier work, I concentrated on encapsulating the most basic needs for context interaction within a simple software package. I worked to design a lightweight context interaction package called CONSUL that allows for uniform treatment of context by requiring that context providers conform to a simple API. The package also provides a registry that manages a user’s access to local and remote context, allowing users to interact with remote and local context in the same way. The package has been utilized in the development of several context-aware applications and middleware systems.


Formalizing Context: Formal models for context-awareness

An important facet of designing and developing correct software that operates in uncertain settings is the ability to formally express its properties. Over the years, a number of middleware systems have been introduced that rely on the use of a coordination model to support the development of applications for mobile environments. While the decoupling offered by these systems makes their use a promising design strategy, the precise semantic definitions of coordination constructs are often either lacking or are not accessible to software engineers. To address this need, I focused on providing a common formal foundation to capture precise semantic definitions of constructs commonly found in middleware for mobility. Through careful expression of each model’s coordination constructs within a Mobile UNITY schema (a set of syntactic and semantic constraints on the use of Mobile UNITY), it was possible to provide a formal basis that allowed for a simplified method of reasoning about the global impact of locally executed coordination constructs. Though models such as Mobile UNITY exist for describing mobile systems, no model existed to address the specific needs of context-aware applications. To fill this void and to enhance the understanding of context-awareness, I recently participated in the development of a model called Context UNITY that provides constructs that are essential to context-aware application design. The model allows programmers to dictate how an individual application utilizes and impacts the information available in the surrounding environment.  Adhering to software engineering principles, the model separates application operation from context interaction, allowing for modular design of context-aware applications. Context-aware behaviors commonly employed within existing context-aware systems were expressed in Context UNITY, which illustrates the potential and expressiveness of the model.