Design and Implementation of Programming Models and Languages

The design and implementation of high-level (domain-specific) programming abstractions are powerful methods to address the accidental complexity in software systems design.

In particular, they are key in automating complex “non-functional” concerns, thus enabling desired software system’s properties such as reliability or security and privacy “by-design”. As such, these methods take a prominent rolle in our research agenda. The motto that drives our research in this area is: “Computing automates the world, PL design automates computing”. Declarative programming models are instrumental in enabling such automation. A recurring research question in the area is how to balance expressivity of programming models versus the ability of perform automated reasoning. We formally define the programming models we design, prove key properties of these models, implement efficient prototypes, which we use to empirically evaluate expressiveness, effects on program design quality, as well as on application performance. Currently, we are working on programming models for (AI-enabled) software systems with ”baked-in" reliability, resiliency and trustworthiness.