This project addresses research in user-interface abstractions, which play a fundamental role in shaping the nature of the user-interfaces we use and the programs we write. Motivated by the needs of smart spaces consisting of networked appliances and interactive mobile devices, the PI will revisit the idea of user-interface generation. Instead of a single, fixed user-interface generator for all applications, the PI will explore the possibility of multiple domain-specific generators. He will develop a general user-interface architecture that allows different generators to share code and their clients to incrementally customize them. To ensure generality of the architecture, he will consider the needs both of mobile and desktop computing, the latter in two domains for which user-interface generation seems to be particularly well suited, namely research applications and teaching of introductory programming. The PI's architecture is based on a model of user-interaction that treats user-interfaces as editors of logical structures of objects. It consists of several layers including external encapsulated application objects, a set of logical structures, editors of these structures, and an external toolkit. In addition, it includes objects that automatically connect objects in adjacent layers. The PI's hypothesis is that emergence of programming and user-interface conventions allows these connections to be made more or less automatically for the vast majority of applications in the domains under consideration. He will develop an algorithm for automatically identifying the behavior of the external application and toolkit objects from the patterns used in the signatures of the methods of these objects. Unlike the traditional approach of requiring an application to adapt to the (programming) interfaces provided by the tool, this algorithm will allow the tool to adapt to the interfaces provided by the application. The PI will also provide an axiomatic scheme for formally specifying the default patterns assumed by the generator, which can be customized to specify domain-specific patterns and associated semantics. Based on these formal specifications, parameterized algorithms will be developed for creating textual and graphical presentations of application objects, and automatically implementing commands to edit these presentations, including commands to undo and synchronize these objects, which require an understanding of the semantics of objects. The PI will develop efficient implementation techniques to ensure that the cost of generating and using a user-interface on a mobile device is low, including a technique to retarget a user-interface generated for a particular appliance to a new appliance with the same logical structure. The work will be evaluated by identifying a representative set of applications and devices from each of the domains under consideration.
Broader Impacts: This project will improve the state of the art in user interface generation, in that instead of requiring a separate implementation for each pair of mobile and appliance devices, just a single implementation will be needed for each mobile device. The research will lead to fundamental changes in the way introductory programming is taught, by allowing students to focus on programming concepts rather than user-interface implementation, and will also increase productivity of research projects by greatly reducing the cost of implementing the user-interfaces of demonstration applications. The software developed will be distributed via the Internet.