The goal of this project is to develop new forms of programming that are more intuitive and more flexible than traditional programming models. Our new programming model is targeted towards low-level system's programming for systems like databases and operating systems where performance and reliability requirements make development particularly challenging. One of the components of our new programming model is new set of graphical notations to allow programmers to pictorially describe the behavior of their programs and automatically get implementations from these high-level drawings. The new programming technologies developed and released as part of this project could have a dramatic impact in programmer productivity, particularly for low-level systems programming.
The technology we are developing relies on new algorithms for constraint based program synthesis that allow the system to combine different forms of input ranging from high-level graphical descriptions of program behavior with more formal notations such as invariants and pre/post conditions. The project will also explore new forms of interaction between the software synthesis engine and the programmer, allowing for a more interactive development model for complex algorithms. These new forms of interaction will be analyzed and evaluated in terms of their impact on programmer productivity through user studies and other forms of usability evaluation.