Failures triggered by hard to debug defects usually involve complex interactions between many program elements. We hypothesize that information flows present a good model for such ...
Designers of concurrent programs are faced with many choices of synchronization mechanisms, among which clear functional trade-offs exist. Making synchronization customizable is h...
Using the application programming interfaces (API) of large software systems requires developers to understand details about the interfaces that are often not explicitly defined. ...
Garbage collectors are notoriously hard to verify, due to their lowlevel interaction with the underlying system and the general difficulty in reasoning about reachability in graph...
Contracts are behavioural descriptions of Web services. We devise a theory of contracts that formalises the compatibility of a client to a service, and the safe replacement of a s...