Two major computer science research challenges motivate the establishment of the Consumer Computing Lab. Caused by the fast growing IT market, the first challenge is overcoming the gap between software applications demand and production. The second challenge is applying IT as the predominant research tool in multidisciplinary analysis and design of complex systems, such as socio-technical, cyber-physical, and biomedical systems.
Sustainable application development
In just three years, over 300,000 mobile applications have been developed. Predictions are that global downloads of non-PC mobile applications will reach 76.9 billion in 2014 and will be worth US$35 billion compared to 9 billion downloads in 2010 and 25 billion in 2011. During the same period, the number of mobile websites increased 20 times. In 2010, there were approximately 3 million mobile-ready websites compared to 150,000 in 2008. That growth is faster than the growth of desktop Internet over a similar period in late 1990. In addition, a whole new class of devices is appearing as internet-connected devices, from television sets, audio equipment, and cars to buildings, public places, and various body-carried medical devices. Estimations are that there will be 15 billion internet-connected devices by 2015, while more than 50 billion internet-connected devices are expected by 2020. Looking at the human force required to satisfy this growing need for application development, statistics reveal that the number of job openings for computer science exceeds the number of people receiving bachelor degrees in software engineering by almost a factor of four. This deficit is also visible in predictions that end-users will be building at least 25% of new business applications by 2014. Efforts to increase the number of professionals trained to work on future applications through credited on-line curricula (Stanford/Coursera) are further indication that this deficit is material and observed today, and that it presents a technological challenge but also a significant market opportunity. Therefore, our research focuses on models of sustainable application development in which actively participate both software engineers and consumers.
Complex system design and analysis
Modeling, simulation, and operation of large socio-technical systems, like financial, health, transport, energy, and education systems, need to be followed and supported by proficient information systems that often lag behind. The core problem in development of such information systems is the transfer of knowledge and expertise from domain experts to software developers through the long development cycle that consists of requirements specification, design, development, testing, and maintenance of information systems. In the last few decades, more than a thousand end-user languages and tools have been developed to enable domain experts and scientists to transfer their domain-specific knowledge into software applications. However, domain-specific languages lack support for collaborative multidisciplinary application development when expertise from several orthogonal scientific domains have to be integrated into a comprehensive information system. Therefore, our research encompasses new programming paradigms and socio-technical interaction models for collaborative and multidisciplinary application development, and programming knowledge sharing and dissemination.
Application development knowledge divide, scalability, and fragmentation are three major nowadays contemporary cyber-society phenomena that determine our research in consumer computing.
First, a major power of innovation comes from the consumer community that possesses the primary motivation and application domain knowledge, in contrast to software engineers that possess software development knowledge. Empowering consumers with application development ability overcomes the knowledge divide problem between domain experts and software developers.
Second, to satisfy the exponentially growing demand for application development and make the process of application development scalable, application consumers should become application producers.
Third, application UIs hide fragmentation, such as multiple hardware and software platforms from consumers. Due to various technical, technological, and business constraints, it is not expected in the near future that this fragmentation will go away. On the other hand, the Web standardizes application user interfaces (UIs), which makes the application UI the unification point that hides the underlying fragmentation. Therefore, we choose the application UI as a foundation for consumer-oriented application development.