Assistant Prof. of Computer Science,Purdue University
Computer-aided Concurrent Programming
Concurrent programs are notoriously difficult to write, verify, and debug. Concurrency bugs are as commonplace as concurrent programs themselves, and often arise due to subtle synchronization errors. This makes concurrent programs excellent targets for computer-aided programming, and, in particular, for automated generation of synchronization code.
Unsurprisingly, synchronization synthesis has been a long-standing interest in the formal methods and programming languages community since the early 1980s. An interesting piece of history is that the seminal 1981 paper of Clarke and Emerson, which founded the highly successful area of model checking (recognized with a Turing Award in 2007), was, in fact, a paper on synthesis of synchronization from temporal logic specifications. The community has come a long way since then, with several practical and scalable solutions for synthesis of synchronization and coordination for concurrent and distributed programs.
In this talk, Roopsha will highlight some of these contributions, with an emphasis on recent advances in a trace-based approach that is applicable to device driver programming. She will end the talk with a preview of an ongoing project on parameterized synthesis of coordination for distributed applications.
- Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic by E. M. Clarke and E. A. Emerson
- Abstraction-Guided Synthesis of Synchronization by M. Vechev, E. Yahav, and G. Yorsh
- Succinct Representation of Concurrent Trace Sets by A. Gupta, T. A. Henzinger, A. Radhakrishna, R. Samanta, and T. Tarrach
- From Non-preemptive to Preemptive Scheduling using Synchronization Synthesis by P. ˇCern ́y, E. M. Clarke, T. A. Henzinger, A. Radhakrishna, L. Ryzhyk, R. Samanta, and T. Tarrach
- Automatic Synthesis of Distributed Protocols by R. Alur and S. Tripakis
Roopsha Samanta (@roopshasamanta) is an Assistant Professor in the Department of Computer Science at Purdue University. Her research mission is to make it easier for people to build provably reliable programs. Her research focuses on developing algorithms and tools for automated program repair and synthesis, and targets diverse application domains such as concurrent and distributed systems, personalized education and machine learning.
Roopsha completed her Ph.D. at The University of Texas at Austin in 2013 and was a postdoctoral researcher at the Institute of Science and Technology Austria (IST Austria) from 2014-2016.