Mobile platform is pervading our daily life, and it has overtaken traditional desktop platform as dominant global internet platform. This leads to an increasing impetus for ensuring the reliability of mobile software systems. However, testing and analysis of mobile software is complex and expensive, often requiring substantial manual effort, due to physical constraints of mobile devices as well as special characteristics of mobile software. This project will investigate efficient and effective techniques for testing and analysis of mobile software systems. We will study the critical properties of mobile software, develop techniques and tools for checking these properties using a combination of static analysis and dynamic analysis, and apply the tools on open source Android software systems to evaluate their effectiveness.
The World Wide Web has gone through many transformations and has recently emerged as a platform for connecting billions of physical objects (Internet of Things) to empower human interaction with both the physical and cyber worlds in an unprecedented way. However, the current state-of-the-art support for developing Internet of Things (IoT) services is application specific, which is equivalent to the scenario where every IoT device requires the development of a specific web browser for connecting to the Internet. This project proposes a lightweight Internet of Things (IoT) software service platform that can run efficiently in power constrained IoT devices. Such a service platform will overcome the interoperability issue in various IoT devices and enable rapid creation of IoT applications. This software framework will be used in the composition of two niche IoT applications: Blood Alcohol Content prediction in adults and fall detection in elderly persons to demonstrate the ease of service creation and the seamless integration of the cyber and the IoT devices without expert programming knowledge.
In the computer vision community, research in wearable sensor-based activity recognition leverage the data automatically collected from sensors embedded into mobile devices to predict the user activities in real-time. Human activity recognition has attracted considerable attention recently in the computer vision field. Analyzing visual streams recorded from video surveillance cameras to automatically understand human activities is a challenging task. It requires one to not only to infer the activities of a single individual, but also to recognize the environment where he/she operates, the people with whom he/she interacts, the objects he/she manipulates and even his/her future intentions.
In this project, the students will be involved in investigating and developing deep learning approaches for wearable camera video analysis. In particular, the student will investigate transfer learning and multi-task learning approach to analyze human activity from body-worn cameras with (i) minimal human effort for data annotation and (ii) in a way that adequately handles the high-level of visual complexity in body-worn camera video. The students involved in the project will acquire both hands-on programming and theoretical machine learning analytical skills.
Our society increasingly relies on interacting, autonomous software systems. There is a great variety of applications for such systems, to name a few: self-driving cars that need to interact to ensure safe operation, teams of drones that can perform various tasks cooperatively, distributed web crawlers, devices in an intelligent home and many others. While the algorithms that provide such systems with their reasoning capabilities come from the area of Artificial Intelligence, it is the program analysis methods from the field of Software Engineering that can give us a high level assurance of proper operation of such systems. Mission critical software systems imply high penalty for failures, thus they require more rigorous and specialized verification. Moreover, a great deal of modern control systems undergo continuous monitoring while they operate in the field, thus monitoring is not limited to the verification stage of software development.
Monitoring systems need to strike a tradeoff between assurance level of verification results and the ability of the analyzed control system to do its job in real time. The project will expose students to existing program analysis algorithms that can be combined to achieve such a trade-off. Also, the students will learn some AI algorithms and software architectures for implementation of interacting, autonomous control systems. A short term goal is to provide algorithmic solutions and functioning prototypes for program analysis that strike a balance between assurance level of results and the time needed for verification. A long term goal is to apply the program analysis prototypes to verification of a distributed control system, using an Android OS. The existing distributed control system that we will use is implemented as a simulation and as an Android-based distributed system. It has been applied to control of a team of cooperating two-track rovers that use Android cell phones as embedded devices.
Energy efficiency has become one of the most important evaluation metrics of mobile phones and the energy efficiency design in mobile industry is facing great challenges. On the one hand, new capabilities and functionality are rapidly added to the next-generation mobile devices. The computing and power demands of future mobile apps keep increasing. On the other hand, users expect extended battery life or at least the same battery life compared to their previous-generation phones. This means future mobile phones must perform more work with less energy consumption. In this project, students will be involved in investigating energy-efficient designs for mobile apps (e.g. VR/Game/AI). Specifically, students will develop energy profiling tools for mobile apps, understand the energy characteristics of various energy-hungry apps, and explore power-efficient techniques to improve the energy efficiency of such apps without sacrificing performance.