Today, software engineering practices focus on finding the single “right” data representation for a program. The “right” data representation, however, might not exist: ch...
Mattias De Wael, Stefan Marr, Joeri De Koster, Jen...
Bug-finding tools based on dynamic analysis (DA), such as Valgrind or the compiler sanitizers provided by Clang and GCC, have become ubiquitous during software development. These...
While cryptography is now readily available to everyone and can, provably, protect private information from attackers, we still frequently hear about major data leakages, many of ...
Steven Arzt, Sarah Nadi, Karim Ali, Eric Bodden, S...
We present a new code assistance tool for integrated development environments. Our system accepts as input free-form queries containing a mixture of English and Java, and produces...
Splitting a language into a core language and a desugaring function makes it possible to produce tractable semantics for real-world languages. It does so by pushing much of the la...
Junsong Li, Justin Pombrio, Joe Gibbs Politz, Shri...
In widely-used actor-based programming languages, such as Erlang, sequential execution performance is as important as scalability of concurrency. We are developing a virtual machi...
Writing low-level concurrent code is well known to be challenging and error prone. The widespread deployment of multi-core hardware and the shift towards using low-level concurren...
Build systems are used in all but the smallest software projects to invoke the right build tools on the right files in the right order. A build system must be sound (after a buil...
es on how abstractions are to be represented as data structures, modules, and so on. Conceptual design is the domain of conventional requirements analysis, project scoping and spec...