The growth of the number of devices and the improved coverage of the network infrastructure creates a real potential for users to seamlessly and effectively take advantage of the available devices, applications, and resources both in proximity and over the network. Ideally, users should work on their daily tasks, switching between them seamlessly, moving their location, without having to worry about the mundane details of managing the underlying mechanisms of the infrastructure.

But improvements in the computing infrastructure come at an increasing cost. The complexity of user-level management of the devices and applications is becoming harder. Mundane chores such as finding an appropriate suite of applications for the user's tasks, tuning the runtime operating parameters of applications, etc, (I call this configuration) pose a significant cognitive burden on the user. The mobility of the user, heterogeneity of hardware and software platforms, and variability of resources make configuration more difficult. Managing the environment requires different skills, something that the user might not have or want to learn.

Ideally, most of the mundane steps of managing the applications and devices should be automated by software. My idea is to automate the configuration. To do so, I am using theories and models from microeconomics to understand and capture what the user needs in terms of applications and acceptable quality of service. I am working on the design and implementation of an analytical model and practical algorithms for automating the configuration.

Initial results demonstrate that automatic configuration can be done efficiently "here and now" (see my ICSE 2004 paper, Dynamic Configuration of Resource-Aware Services in the publications). In this setup, configuration is an instantaneous problem of selecting a suite of applications and optimal allocation of scarce resources among applications to best satisfy the utility of the user's task. To scale the solution over time, the system reacts to changes and re-configures.

My next result demonstrates the feasibility of automatic configuration in the presence of resource predictors. Predictors provide forward-looking estimates of the available level of resources based on time series analysis. I leverage work in bandwidth, CPU, and battery prediction to define a model of the resource availability. I have designed and implemented anticipatory algorithms that make configuration decisions based on resource predictions (see my SASO 2007 paper, Leveraging Resource Predictions in Anticipatory Dynamic Configurationin the publications).

My work is based on a shared infrastructure for pervasive computing that was originally proposed by Joao Sousa. In a technical report titled, Giving Users the Steering Wheel for Guiding Resource-Adaptive Systems , we demonstrate an integration between Sousa's, Rajesh Balan's, and my work. The gist of that work is that user's can use Sousa's system to define tasks and provide preferences. These preferences can be used by my system to guide the adaptation of fidelity- aware applications developed by Balan.

My thesis combines all my contributions in this area.