Satish Chandra

Brief Bio

Satish Chandra obtained a PhD from the University of Wisconsin-Madison in 1997, and a B.Tech from the Indian Institute of Technology-Kanpur in 1991, both in computer science. From 1997 to 2002, he was a member of technical staff at Bell Laboratories, where his research focused on program analysis, domain-specific languages, and data-communication protocols. From 2002 to 2013, he was a research staff member at IBM Research, where his research focused on bug finding and verification, software synthesis, and test automation. His work on bug finding shipped in IBM's Java static analysis product, and his work on test automation was adopted in IBM's testing services offering. From 2013 to 2016, he worked at Samsung Research America, where he led the advanced programming tools research team. His work on memory profiling of web apps was included in Samsung's Tizen IDE. In 2016, he started working at Facebook where he works on program analysis and on applications of machine learning to developer tools. He is an ACM Distinguished Scientist.

Recent items of note

"Retrieval on Source Code: A Neural Code Search" with S. Sachdev, S. Kim, S. Luan, H. Li and K. Sen, in MAPL 2018.

I gave a keynote lecture at UC Irvine's Institute for Software Research on "Bringing ML to the Developer", June 2018.

"IoTa: A Calculus for Internal of Things Automation", with Julie Newcomb, Cole Schlesinger, JB Jeannin and Manu Sridharan, in OOPSLA 2017, Onward! track.

"Finding Fix Locations for CFL-Reachability Analyses via Minimum Cuts", with Andrei Dan, Manu Sridharan, Jean-Baptiste Jeannin, and Martin Vechev, in CAV 2017.

I taught a graduate class on Software Engineering during the Winter 2017 quarter at Stanford University.

Started working at Facebook, November 2016.

"Type Inference for Static Compilation of JavaScript", with Colin Gordon, Manu Sridharan, Cole Schlesinger, Jean-Baptiste Jeannin, Frank Tip and Young-il Choi, in OOPSLA 2016.

"A Practical Framework for Type Inference Error Explanation", with Calvin Loncaric, Cole Schlesinger and Manu Sridharan, in OOPSLA 2016.

"Formula-based Software Debugging" with Abhik Roychoudhury, appears in CACM July 2016,

"Trace Typing: An Approach for Evaluating Retrofitted Type System", with Esben Andreasen, Colin Gordon, Manu Sridharan, Koushik Sen and Frank Tip, to appear in ECOOP 2016.

"Lessons from the Tech Transfer Trenches", with Suresh Thummalapenta and Saurabh Sinha, appears in CACM Feb 2016.

Meminsight ships with Tizen SDK as part of a tool set for JavaScript analysis (see here)

ACM webinar on my experiences with tech transfer is now on YouTube


I am serving on the program committees of the following conferences

International Symposium on Software Testing and Analysis (ISSTA 2019), PC 

Conference on Programming Language Design and Implementation (PLDI 2018), ERC

International Conference on Foundations of Software Engineering (FSE 2018), PC and Industry track co-chair

International Symposium on the Foundations of Software Engineering (FSE), 2017

International Symposium on the Foundations of Software Engineering (FSE), 2016

International Symposium on Software Testing and Analysis (ISSTA) 2016

International Conference on Software Testing, Verification and Validation (ICST), 2016

India Software Engineering Conference (ISEC), 2016

International Conference on Runtime Verification (RV) 2015

International Conference on Software Engineering - SE in Practice track (ICSE), 2015

Symposium on Principles of Programming Languages (POPL) 2015 

Current Research

(Note: Most of my publications are available on the ACM Digital Library, but do feel free to email me for a copy if you have trouble locating it online.)

JavaScript Tools

At Samsung, I have been focusing on programming tools for JavaScript. JavaScript runs on a whole range of devices from servers to wearable computers.  Our works looks at how to make application development in JavaScript less prone to functional and performance errors, as well as how to execute it efficiently in resource-constrained devices.

  • "Type Inference for Static Compilation of JavaScript", with M. Sridharan, C. Gordon, J-B Jeannin, C. Schlesinger, F. Tip and Y. Choi, to appear in OOPSLA 2016.
  • "A Practical Framework for Type Inference Error Explanation", with C. Loncaric, C. Schlesinger and M. Sridharan, to appear in OOPSLA 2016.
  • "Trace Typing: An Approach for Evaluating Retrofitted Type System", with Esben Andreasen, Colin Gordon, Manu Sridharan, Koushik Sen and Frank Tip, in ECOOP 2016
  • "A Type System for JavaScript with Fixed Object Layout", with Wontae Choi, George Necula and Koushik Sen, in SAS 2015
  •  "MemInsight: Platform Independent Memory Debugging for JavaScript", with Manu Sridharan, Simon Jensen and Koushik Sen, in FSE 2015

Testing of Web Applications

Our work on testing of web application draws on insights from synthesis, abstraction refinement and symbolic analysis to solve practical problems in test automation, test design, and test data generation. The ATA tool that we built is in use at IBM Global Services. A talk on my experiences with this tech transfer is available on YouTube, and an article appears in Feb 2016 issue of CACM.

  • S.H. Jensen, S. Thummalapenta, S. Sinha and S. Chandra, Test Generation from Business Rules, ICST 2015 (Best paper award)
  • R. Yandrapalli, S. Sinha, S. Thummalapenta, and S. Chandra, Robust Test Automation using Contextual Clues, ISSTA 2014
  • S. Thummalapenta, P. Devaki, Saurabh Sinha, S. Chandra, S. Gnanasundaram, D. Nagaraj and S. Sathishkumar, Efficient and Change-Resilient Test Automation: An Industrial Case Study, ICSE 2013 (Industry track)
  • S. Thummalapenta, K. V. Lakshmi, S. Sinha, N. Sinha, S. Chandra, Guided Test Generation for Web Applications , ICSE 2013
  • S. Thummalapenta, N. Singhania, P. Devaki, S. Sinha, S. Chandra, A. Das and S. Mangipudi, Efficiently Scriptig Change-Resilient Tests using ATA, FSE 2012 (Demo Track)
  • S. Thummalapenta, S. Sinha, N. Singhania and S. Chandra, Automating Test Automation , ICSE 2012

Software Synthesis and Applications

Compute power can be used not only to verify or test software after it is written, but also to help during the process of writing code. One way to harness compute power is to implement an oracular runtime that can execute partially written programs to drive them to successful termination. This idea can be used to make it easier for programmers to develop tricky code. 

We have also applied ideas from software synthesis to diverse topics such as fault localization and test automation.

  • "Toward Tool Support for Interactive Synthesis", with Shaon Barman, Ras Bodik, Emina Torlak, Arka Chattacharya and David Culler, accepted to Onward! 2015.
  • "Mimic: Computing Models for Opaque Code", with Stefan Heule and Manu Sridharan, accepted to FSE 2015
  • M. Vijayraghavan, E. Torlak, N. Sinha and S. Chandra, What Gives? A Hybrid Algorithm for Error Explanation, VSTTE 2014
  • D. Gopinath, D. Saha, S. Khurshid and S. Chandra, Data Driven Repair of Selection Statements, ICSE 2014
  • H. Nguyen, D. Qi, A. Roychoudhury and S. Chandra, SemFix: Program Repair via Semantic Analysis ICSE 2013
  • S. Chandra, E. Torlak, S. Barman and R. Bodik, Angelic Debugging, ICSE 2011
  • D. Saha, M. G. Nanda, P. Dhoolia, V. K. Nandivada, V. Sinha and S. Chandra, Fault Localization for Data-Centric Programs, FSE 2011
  • S. Barman, R. Bodik, S. Chandra and E. Torlak, Discovering Algorithms in Angelic Programs, IBM Research Report RC25023, 2010
  • R. Bodik, S. Chandra, J. Galenson, D. Kimelman, N. Tung, S. Barman, and C. Rodarmor, Programming with Angelic Nondeterminism, POPL 2010

Bug-finding and verification

For the past few years, I have been working on static bug finding and verification tools, primarily for Java. My colleagues and I have been interested in detecting (or proving absence of) a variety of defects such as null dereferences, resource leakage and type-state errors. Our focus has been on scalable inter-procedural analysis that can be applied to large bodies of code, and yet produces consumable results. We have also done work on recovering implicit type-state specifications from code. Some of our work has found its way in IBM (Rational) products.

  • Andrei Dan, Manu Sridharan, Jean-Baptiste Jeannin, and Martin Vechev, Finding Fix Locations for CFL-Reachability Analyses via Minimum Cuts, in CAV 2017
  • M. Sridharan, S. Chandra, J. Dolby, S. J. Fink, and E. Yahav. Alias anlaysis for object oriented programs In Clarke, Wrigstad, and Noble, editors, Aliasing in Object-Oriented Programming, Lecture Notes in Computer Science, Springer, 2013.
  • N. Sinha, N. Singhania, M. Sridharan and S. Chandra, Scalable Bug Detection via Alternating Scope Expansion and Pertinent Scope Learning, CAV 2012
  • M. Sridharan, J. Dolby, S. Chandra, M. Schaefer, and F. Tip, Correlation Tracking for Points-To Analysis of JavaScript,ECOOP 2012
  • E. Torlak and S. Chandra, Effective Interprocedural Resource Leak Detection, ICSE 2010
  • M.G.Nanda, M. Gupta, S. Sinha, S. Chandra, D. Schmidt and P. Balachandra, Making Defect-Finding Tools Work for You, ICSE 2010 (practice track)
  • S. Chandra, S. Fink and M. Sridharan, Snugglebug: A Powerful Approach to Weakest Preconditions, PLDI 2009
  • A. Loginov, E. Yahav, S. Chandra, S. Fink, N. Rinetzky, M. G. Nanda, Verifying Derefence Safety via Expanding Scope Analysis, ISSTA 2008
  • I. Dillig, T. Dillig, E. Yahav, S. Chandra, The CLOSER: automating resource management in Java, ISMM 2008
  • G. Yorsh, E. Yahav, S. Chandra, Generating precise and concise procedure summaries POPL 2008
  • M. Pistoia, S. Chandra, S. Fink, E. Yahav, A Survey of Static Analysis Methods for Idetifying Security Vulnerabilities in Software Systems, IBM System Journal 2007
  • M. G. Nanda, C. Grothoff, S. Chandra, Deriving object typestates in the presence of inter-object references, OOPSLA 2005
Please look me up on DBLP for older publications.