Programming Languages and Tools

Rigorous Software Engineering has evolved and changed its name! The new area is called : “Programming Languages and Tools (PLATO)”.

We work on tools, languages and methodologies to dramatically increase the productivity of software development. We are interested in both analysis tools for existing software, as well as in asking questions about how software of the future should be designed.

Current focus

 

Verification and Testing

We are working on static analysis and testing to find bugs in programs and also guarantee certain properties about programs: Yogi.

PASTA = Program Analysis + Statistical Analysis

We are working on a variety of techniques that combine information from programs together with a large amount of data about development process, as well data from users to help handle the information overload associated with large projects: DebugAdvisor, Holmes and Tark. We are also working on applications of Bayesian inference for specification inference, QBF solving and program synthesis: Merlin, other links coming soon.

Programming Models for Concurrency and Distribution

We are working on new techniques that help programmers write correct concurrent programs by construction, and better programming abstractions to deal with the realities of concurrency and distribution: WYPIWYG, Isolator, GuesstimateSpeculative Parallelism, Molecular Transactions.

RSE Tools Downloads

  • Guesstimate: Programming model for collaborative distributed systems
  • Holmes: Automated statistical debugging for .NET
  • Tark: Mining linear temporal rules

Past Projects

  • SLAM is a joint project with the SRR group at MSR. SLAM is the engine that drives Microsoft's Static Driver Verifier.
  • Preferential Path Profiling (PPP) is a joint project with the RAD group at MSR. PPP is a novel scheme for efficiently profiling paths in programs.
  • InvCop uses a combination of static and dynamic analysis to find violations of object invariants.
  • Darwin uses symbolic execution to root cause a test failure which used to pass in a prior version.
  • Netra is a static analysis tool to analyze access control configuration information. It can be used to identify potential vulnerabilities at the level of configuration metadata.
Recent Publications

Click here for a full publication list

Alumni

  • Yamini Kannan <BITS Pilani, RSE, Berkeley>
  • Monu Kedia <IBM, RSE, IBM>
  • Krishna K. Mehra <IIT Kharagpur, RSE, Capillary Technologies>
  • Kanika Nema <IIT Bombay, RSE, VMWare>
  • Sai Deep Tetali <DAIICT, RSE, UCLA>
  • Aditya V. Thakur <IISc Bangalore, RSE, Wisconsin>
  • Abhishek Udupa <IISc Bangalore, RSE, UPenn>
  • Lakshmisubrahmanyam Velaga <IIT Kharagpur, RSE, IIM Bangalore>

Visitors

Interns

2010:  Siddarth Agarwal (IIT Kanpur), Nels Beckman (CMU), Bharat Balasubramanian (UT Austin), Arun Chaganty (IIT Madras), Piyush Chawla (IIT Delhi), Neil Conway (Berkeley), Saurabh Joshi (IIT Kanpur), Abhishek Katyal (IIT Delhi), Nirmesh Malviya (IIT Kanpur), Hesam Samimi (UCLA), Rahul Srinivasan (IIT Bombay), Zachary Tatlock (UCSD)

2009: Jong-Hoon An (Maryland), Ashish Kumar Agarwal (IIT Kanpur), Vijay Victor D'Silva (Oxford University), William R. Harris (Wisconsin), Nicholas P. Johnson (Princeton), Vijay Anand Korthikanti (UIUC), Prakash J. Prabhu (Princeton), Rahul Sharma (IIT Delhi), Dheeraj Singh (IIT Kharagpur), Abhishek Udupa (IISc Bangalore), Shashank Yaduvanshi (IIT Delhi) 

2008: Jyotirmoy Deshmukh (UT Austin), Bhargav S. Gulavani (IIT Bombay), Christopher Hayden (UMD), Michael Tschantz (CMU)

2007: Nels E. Beckman (CMU), Shilpa Bugde (SCIT, Pune), Pavol Cerny (UPenn), Pallavi Joshi (UC Berkeley), Akash Lal (Wisconsin), Robert J. Simmons (CMU), Christian Stefansen (DIKU), Pushkar Tripathi (IIT Delhi)

2006: Avik Chaudhuri (UC Santacruz), Prakash Chandrasekaran (CMI), Chris Conway (NYU), Madhu Gopinathan (IISc Bangalore), Bhargav S. Gulavani (IIT Bombay), Sumit Jha (CMU), Roman Manevich (Tel Aviv), and Kapil Vaswani (IISc Bangalore)

2005: Bhargav S. Gulavani (IIT Bombay), Aditya Parameswaran (IIT Bombay)

    Careers

    Microsoft Research India offers an unparalleled opportunity to conduct innovative and cutting-edge research and to see your research results improve the software used by most of the world. Microsoft Research’s agenda combines world-class research together with our academic colleagues and a unique opportunity to put ideas into practice by working with Microsoft product groups. Researchers at Microsoft Research have an unequalled opportunity to conduct fundamental research with few resource constraints, publish in leading academic conferences, and at the same time, influence and improve software development in the world’s largest software company and its customers.

    We are still interviewing for researchers in the Rigorous Software Engineering group. You can apply here. If you know us from prior interactions, please send email to sriram@microsoft.com. We get a lot of email from people who do not really have a research background, so please be considerate of our time when you send email.

    We welcome applicants from all over the world, regardless of nationality. India, and in particular Bangalore, is booming with fresh energy and opportunities! If you have ever considered living in India, or returning to live in India, now is the time to apply!

    We are also looking for interns throughout the year. We are fairly flexible about when we can start and end internships. For internships, please apply here (Select the "Rigorous Software Engineering" group).

    People

    Akash Lal
    Akash Lal

    Aditya Nori
    Aditya Nori

    Ganesan Ramalingam
    Ganesan Ramalingam

    Bill Thies
    Bill Thies

    Ravichandhran Kandhadai Madhavan
    Ravichandhran Kandhadai Madhavan

    Sriram Rajamani
    Sriram Rajamani

    Kaushik Rajan
    Kaushik Rajan

    Kapil Vaswani
    Kapil Vaswani

    Ranjita Bhagwan
    Ranjita Bhagwan

    News

    Share
    Share this page on Facebook
    Share this page on Twitter
    Share this page on LinkedIn
    E-mail this page
    RSS feeds