Developing practical concurrent algorithms and providing tools to test and evaluate them
Concurrent programming has gained popularity over the past decade. Every language and platform provides corresponding primitives, which have become harder and harder to use efficiently with increasing system complexity, such as relaxed memory models or NUMA architectures. Several important questions arise in practice. How do we build efficient concurrent algorithms? What is the best trade-off between progress guarantees, efficiency, and fairness? How do we check all of these algorithms for correctness? How do we benchmark them? While some of the questions have been partially answered in academia, many practical problems remain. Our goal is to answer these questions by providing practically reasonable and theoretically valuable solutions along with high-quality tools that can help other researchers and developers in the field of concurrency.