While the success of app marketplaces has made it easier to distribute mobile apps, global distribution has made it harder to write them. To achieve good performance on billions of devices around the globe, mobile apps must run efficiently on a wide variety of hardware, cope with constantly changing network conditions, conserve limited energy resources, and deal with varying availability and accuracy of core services such as location, all while satisfying a diverse community of users. This diversity creates development-time uncertainty for app programmers, who may be unsure how to adapt their app to achieve good performance at all times, for anyone, anywhere.
My research group is working on a new system,
maybe which addresses the challenge of mobile systems adaptation
by allowing programmers to express—rather than suppress—development-time uncertainty. A new language construct allows programmers
to indicate where they are uncertain about what to do, what legitimate options are available, and what constitutes success or failure—all
things that can be determined at development time. Post-deployment testing and machine learning are then used to resolve the uncertainty by crafting
effective data-driven adaptation strategies once more information is known.
In this seminar we will both explore other approaches to mobile systems adaptation (through paper reading) and continue to develop, evaluate, and use the maybe system (through implementation). Students will also work in teams on several projects related to the course content. Our goal will be to begin projects which may lead to full-length publications in the spring.