With lighter and smaller mobile devices replacing laptops and PC’s, the advent of wearable computing, and the resulting growth in mobile application market, mobile user expectations for pervasive computation and data access are unbounded. Yet, the persistent gap in hardware performance between typical handheld devices and PCs has driven many mobile applications to not run in isolation on mobile devices. Many applications, such as face recognition, body language interpretation, speech and object recognition, and natural language processing, exceed the limits of standalone mobile devices. Such applications resort to exploiting data and computational resources in the cloud via numerous wireless communication technologies such as 3G, 4G, Wifi, or even Bluetooth. These trends have sparked researching problems arising from data and computational offloading to cloud resources, such as Amazon EC2, or Microsoft Azure. Research in this area has focused on profiling and offloading tasks from mobile devices to remote clouds, automatically transforming mobile applications by provisioning and partitioning its execution into offloadable tasks, and more recently, arguing the need for bringing computational resources closer to task initiators in order to save energy. There are, however, many additional entities in a mobile user’s environment that are capable of lending computation resources. These include: other mobile devices, compute servers carried on vehicles, and cloudlets. Motivated by this, we investigate in this proposal opportunistic cloud computing where mobile devices leverage these nearby computational resources, which due to mobility may be intermittently available, in order to save execution time and consumed energy. Our proposal is divided into two major thrusts: A) Consider environments in which computational offloading is performed among a set of mobile devices that form what we call a Mobile Device Cloud (MDC). We will develop an MDC computational offloading system to enable the development and assessment of MDC solutions, desig and implement algorithms for sharing computational resources in MDCs, develop algorithms that incorporate energy sharing and power consumption distribution, and briefly investigate MDC storage sharing by exploiting data locality. B) Enable generic computational offloading to heterogeneous devices. We will investigate the problem of routing computation tasks amongst mobile MDCs, design and implement algorithms that address computational offloading challenges to Mobile Cloudlets, build on offloading solutions to the cloud by studying scenarios where mobile devices experience intermittent connectivity, and develop an overarching architecture that would abstract and integrate various computational entities available (e.g. cloud, cloudlets, neighboring mobile devices) when making computational offloading decisions.