Kapil Vaswani

I am a researcher with the Programming Languages and Tools group at Microsoft Research. I am broadly interested in programming language abstractions and tools that simplify the design and implementation of concurrent and distributed systems. I graduated from the department of Computer Science and Automation at the Indian Institute of Science where I worked on efficient and accurate profiling and performance modeling techniques.

Current Research

CScale is a programming model that simplifies the task of writing consistent and highly available distributed applications. CScale applications have simple semantics that enables local reasoning, and testing and debugging on the single machine. CScale manages all aspects of execution of a CScale application on a large clusters, including deployment and state management (replication and data partitioning).
One of the barriers to adoption cloud database technologies such as SQL Azure is data security and privacy. Data is a valuable asset to most organizations and storing the data in the cloud is often perceived as a security risk. This project investigates encryption as a mechanism to address such data security concerns. In particular, the goal of the project is to research, design, and build a comprehensive database system that supports encryption as a first class citizen. The desired functionality includes: (1) storing encrypted data, (2) issuing encrypted queries and getting back encrypted results. Our goal is to support all sophisticated features of a DBMS such as complex queries, indexes, transactions and stored procedures while maintaining strong security, (3) enabling automated migration of database applications to the cloud. 
Performance Models for Distributed Applications
Programming models such as MapReduce and DryadLINQ provide programmers with declarative abstractions for writing data intensive computations and runtime systems that can execute these computations on a large cluster of machines. However, this level of abstraction comes at a cost – the inability to understand, predict and debug performance. The objective of this project is to construct accurate performance models for predicting the execution time of distributed queries.
Side Effect Analysis for .NET (Seal)
Seal is a modular static analysis tool that infers side-effects of methods in a .NET application. The side-effects of a method are the set of heap locations in the program state right before the invocation of the method (referred to as prestate) that are modified (or written) by the method. Intuitively, these are the locations on which the method has an effect and hence can be expected to change after the method invocation. A method with no side-effects is said to be pure. Seal supports many sophisticated (and higher-order) C# features such as LINQ, delegates, event-handlers, exceptions, and scales to several thousand lines of code. Check out Seal in action here.


Recent papers

Click here for a full list of papers




Other projects

Speculate - Language extensions for speculative parallelism 
WYPIWYG - Inferring concurrency control from sequential proofs 
Isolator - Dynamically enforcing isolation in concurrent programs 
Darwin - Software fault localization using program versions
Preferential Path Profiling - An approach for improving the efficiency of collecting path coverage data  


Program committees

POPL 2015 (ERC). PLDI 2014 (ERC), ICSE 2014, ISEC 2013, TOOLS Europe 2012, ISEC 2012, ICTAC 2012, CGO 2012, APLAS 2011, ISEC 2011, SCORE 2011, FASE 2011