I am an Assistant Professor in the Department of Computer Science at Purdue University. I lead the Purdue Formal Methods (PurForM) group and am a member of the Purdue Programming Languages (PurPL) group. Before joining Purdue in 2016, I completed my PhD at UT Austin in 2013, advised by E. Allen Emerson and Vijay K. Garg, and was a postdoctoral researcher at IST Austria from 2014-2016 with Thomas A. Henzinger. I am a recipient of a 2019 NSF CAREER award and a 2021 Amazon Research Award.
My research seeks to help programmers write programs that conform to their intent. I develop tools and techniques for algorithmic program verification, synthesis, and repair for a spectrum of application domains, correctness specifications, and programmer expertise.
I am actively seeking motivated and talented graduate students and postdoctoral researchers. If you wish to work with me, email me with a statement explaining your interest in my research.
||Modular, Bounded Verification of Unbounded Distributed Systems (ongoing). Modern distributed services are typically built in a modular fashion using core distributed protocols as building blocks. The ubiquity of some of these building blocks has sparked several valiant verification efforts for them in the last decade. Oddly, there have been far fewer verification efforts that go beyond core protocols and target distributed services built on top of such core protocols. In our ambitious Discover[i] project (pronounced, disovery), we seek to develop modular, scalable, fully-automated verification approaches for distributed systems that mimic their modular design. In particular, we advocate an approach based on assuming that the underlying core protocols are verified separately and encapsulating their complexities within cleanly-defined abstractions. See this talk or read our OOPSLA 2021 QuickSilver paper and our CAV 2020 paper to learn more.|
||Semantics-Guided Inductive Program Synthesis (ongoing). Example-based program synthesis and repair are increasingly favored paradigms of program synthesis as they can help democratize programming. Because examples and other inductive specifications are inherently incomplete, inductive synthesis engines encounter challenges such as overfitting, ambiguity, and brittleness, similar to inductive learning-based engines. PL researchers have typically attacked these problems by applying syntactic biases to the search space in the form of tailored DSLs, grammars and ranking functions. We are exploring a variety of techniques to further enhance the generalizability and robustness of such engines by applying semantic biases to the search space. Check out this talk, or read our CAV 2016 Qlose paper and PLDI 2019 SemCluster paper targeting semantics-guided program repair, and our POPL 2020 paper targeting semantics-guided program synthesis.|
||Computer-Aided Concurrent Programming.Developed advanced trace-based techniques for synchronization synthesis and applied them to device driver programming. Our work resulted in new contributions in language theoretic-verification, trace generalization and synchronization inference. See our FMSD 2017, CAV 2015, and POPL 2015 papers.|
||Robustness of I/O Systems.Formalized robustness of finite-state I/O systems as Lipschitz continuity - a transducer is K-(Lipschitz) robust if the perturbation in its output is at most K times the perturbation in its input - and developed automata-theoretic decision procedures for checking K-robustness of discrete transducers, networks of discrete transducers, timed transducers, and asynchronous sequential circuits. See our VMCAI 2016, FSTTCS 2014, ATVA 2013, and VMCAI 2013 papers.|
|Jun'22||You can now watch our PLDI 2022 tutorial on Discover[i] here!|
|Feb'22||Nour, Chris, and I will be presenting an invited tutorial on Discover[i] at PLDI 2022 in San Diego!|
New draft from Discover[i] project available:
Bounded Verification of Doubly-Unbounded Distributed Agreement-Based Systems
|Sep'21||Excited about my talk on our MANTIS project at Strange Loop on Oct 1!|
|Sep'21||Looking forward to my invited talk on our Discover[i] project at the DISC Workshop on Formal Reasoning in Distributed Algorithms (FRIDA)!||All posts|
|Discover[i]: Taming Unbounded Distributed Systems with Modular, Bounded Reasoning.
PLDI Tutorial, 2022.
|Program Synthesis: A Dream Realized?
|MANTIS: Semantics-driven Inductive Program Synthesis.
Code Mesh 2020.
|Augmented Example-based Synthesis using Relational Perturbation Properties.
|Computer-aided Concurrent Programming.
Papers We Love Conference, 2018.
|Nouraldin Jaber (PhD Student, co-supervised with Milind Kulkarni)|
|Christopher Wagner (PhD Student)|
|Yongwei Yuan (PhD Student)|
|Parker Lawrence (Undergraduate Student)|
|Xuankang Lin (M.S, 2021, co-supervised with Suresh Jagannathan/xuan)|
|David Perry (M.S, 2018, co-supervised with Xiangyu Zhang)|
|CS560: Reasoning About Programs. Fall 2021, Spring 2021, Spring 2020, Spring 2019, Fall 2017, Fall 2016|
|CS307: Software Engineering. Spring 2022, Fall 2020, Fall 2019, Spr 2018|
|CS456: Programming Languages. Spring 2017|
|2021||General Chair MAPSPLDI, Organization Committee VMWCAV|
|2019||Co-Chair PLDI AEC|
|2016||Co-Chair DARSCPSWeek, Publicity Chair CAV|
|2022||PLDI (Area Chair)|
|2019||CAV, PLDI ERC|
|2018||OOPSLA, CAV, VMCAI, SYNT, POPL SRC|
|2017||CAV, FMCAD, SYNT|