
| Home \ Research Areas | Login |
How may one simplify programming of complex systems, while making sure they correctly capture the users’ needs, and do not incur in unexpected erroneous behavior? We are investigating novel programming abstractions and type systems, logics and models for reasoning about distributed systems, modelchecking tools, algorithms and data structures for handling large amounts of data, and other fundamental tools and techniques to increase the flexibility and reliability of software systems.
How can we structure the software production and engineering process, so as to increase the cost-effectiveness, adaptability, and quality of the developed artifacts, while taking into account the requirements of modern large scale information systems? We are proposing new approaches to promote the reusability of software, building on early aspects based requirements, new software architecture and software product line solutions, and developing novel approaches to experimental software engineering, reengineering, and visualization.
The widespread availability of high performance computing systems, of low cost parallel architectures, of high capacity file storage devices, and of clusters and grids, is fostering the development of applications, involving huge amounts of data, processing power, and distributed resources, in all areas of science and engineering. We are developing distributed programming languages and execution models, tools and problem solving environments for assisting parallel and distributed program development, support for parallel file systems, and architectural solutions for grid computing.
All computing devices, from servers to mobile phones and tiny sensors, are becoming inter-connected in a global Internet-of-things world. A large number of challenges are posed in the development of systems for such environments. We are investigating innovative solutions for supporting collaborative distributed software systems, managing data in mobile computing, disseminating events and notifications in large scale networks, securing access control within groups of users, and coordinating sensor networks.
Multimedia computing is a key enabling technology for communicating ideas and data between humans and machines. How can we explore and invent the new paradigms of communication and interaction supported by the myriad of computing devices currently available to everyone? We are developing new techniques for building mobile storytelling applications, for processing and accessing personal memories, for representing and observing natural phenomena, and to improve the user interfaces of technology assisted education systems.
How efficiently is it possible to automatically extract information from natural language text? We are developing efficient techniques, based on statistics and machine learning, to extract knowledge from human written text collections, so as to improve language independent parsing, translation, and information retrieval tasks.
We are advancing the state of the art in computer‑based visualization of physical and virtual phenomena, with an emphasis on application fields such as medical imaging, cloth simulation, 3D modeling, and animation.