Satish Chandra

Contact

Brief Bio

Satish Chandra is a software engineer at Google, where he applies machine learning techniques to improve developer productivity and leads the work on internal developer infrastructure using these techniques. 

Prior to Google, he has worked -- in reverse chronological order -- at Facebook, Samsung Research, IBM Research, and Bell Laboratories. His work has spanned many areas of programming languages and software engineering, including program analysis,  type systems, software synthesis, bug finding and repair, software testing and test automation, and web technologies. His research has been widely published in leading conferences in his field, including POPL, PLDI, ICSE, FSE and OOPSLA. The projects he has led have had significant industrial impact: in addition to his work on ML-based developer productivity at Facebook, his work on bug finding tools shipped in IBM's Java static analysis product,  his work on test automation was adopted in IBM's testing services offering, and his work at Samsung was included in Samsung's Tizen IDE.

Satish Chandra obtained a PhD from the University of Wisconsin-Madison, and a B.Tech from the Indian Institute of Technology-Kanpur, both in computer science.  He is an ACM Distinguished Scientist and an elected member of WG 2.4.

His curriculum vitae can be found here.


The following links have a good overview of his work on ML applied to developer productivity:

Neural Software Analysis, a review article in CACM Jan 2022

I offered a summer school at ECOOP 2021: https://conf.researchr.org/details/ecoop-issta-2021/ecoop-issta-2021-summer-school/3/Machine-Learning-for-Developer-Productivity

Blog post on our work on a different way of debugging crashes: https://engineering.fb.com/2021/02/09/developer-tools/minesweeper/

I gave the keynote at MSR 2020 conference. The video is here (starts at 13:00): https://www.youtube.com/watch?v=Qvf7mHa-YYs

Blog post on our work on debugging crashes: https://engineering.fb.com/developer-tools/ccsm/

Blog post on our code search work: https://ai.facebook.com/blog/neural-code-search-ml-based-code-search-using-natural-language-queries/

Blog post on our code recommendation work: https://ai.facebook.com/blog/aroma-ml-for-code-recommendation/

Blog post on our work on automatic bug fixing: https://code.fb.com/developer-tools/getafix-how-facebook-tools-learn-to-fix-bugs-automatically/

Blog post on our work on predictive test selection: https://code.fb.com/developer-tools/predictive-test-selection/

Video of our talk at Facebook's F8: https://developers.facebook.com/videos/2019/using-machine-learning-for-developer-productivity/


Recent items of note


"Resolving Code Review Comments with Machine Learning", with several colleagues, at ICSE SEIP 2024 

I served as the general chair of FSE 2023, to be held in San Francisco.

I gave a keynote lecture at ISSTA 2023 in June 2023

Our work on SemFix, ICSE 2013 (with Abhik Roychoudhury and others) is awarded ICSE Most Influential Paper in May 2023

I gave a keynote lecture at ISEC 2023 in Feb 2023

My co-authors and I received the IEEE Computer Magazine Best Paper Award for 2021 for AI in Software Engineering at Facebook, Dec 2022

Started at Google, Jun 2022

I am teaching Machine Learning for Software Engineering at Stanford in Spring 2022

"Counterfactual Explanations for Models of Code", with J Cito, I. Dillig and V. Murali, to appear in ICSE SEIP 2022

"Explaining Mispredictions of ML Models using Rule Induction", with J. Cito, I. Dillig, V. Murali and S. Kim, in ESEC/FSE 2021

I gave a summer school mini-course on "Machine Learning for Developer Productivity " at ECOOP/ISSTA 2021

"Code Prediction by Feeding Trees to Transformers", with S. Kim, J. Zhao and Y. Tian,  in ICSE 2021

"Industry-scale IR-based Bug Localization: A Perspective from Facebook", with V. Murali, L. Gross, and R. Qian, in ICSE SEIP 2021. This paper received a Distinguished Paper Award.

"Scalable Statistical Root Cause Analysis on App Telemetry", with V. Murali, E. Yao, and U. Mathur, in ICSE SEIP 2021

"What would it take to Use Mutation Testing and Industry: A Study at Facebook", with M. Beller, C-P Wong, J. Bader, M. Machalica, A. Scott and E. Meijer, in ICSE SEIP 2021

Co-organized REBASE with OOPSLA 2020

"TypeWriter: Neural Type Prediction with Search-based Validation", with M. Pradel, G. Gousios, and J. Liu, in FSE 2020

"Scaffle: Predicting Bug Locations from Crash Traces in Ultra-Large Scale Heterogeneous Code Bases", with M. Pradel, V. Murali, R. Qian, M. Machalica, and E. Meijer, in ISSTA 2020

"Debugging Crashes Using Continuous Contrast Set Mining", with R. Qian, Y. Yu, W. Park, V. Murali, and S. Fink, in ICSE SEIP 2020

"Getafix: Learning to Fix Bugs Automatically", with J. Bader, A. Scott, and M. Pradel, in OOPSLA 2019.

"Aroma: Code Recommendation via Structural Code Search", with C. Barnaby, D. Yang, F. Luan and K. Sen, in OOPSA 2019. This paper received an ACM Distinguished Paper award.

I taught an undergraduate class on Compilers during Spring 2018 at Stanford University.

"When Deep Learning Met Code Search", with J Cambronero, S. Kim, H. Li and K.Sen in FSE 2019

"Neural Query Expansion for Code Search", with J. Liu, S. Kim, V. Murali, S. Chaudhuri, in MAPL 2019

"SapFix: Automated end-to-end repair at scale", with A. Marginean and other, in ICSE SEIP 2019

"Predictive Test Selection", with M. Machalica, A. Samylkin and M. Porth, in ICSE SEIP 2019

"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 2016, 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


Service

I am serving on the program committees of the following conferences:

ACM SIGPLAN conference on Systems, Programming, Languages, and Applications: Software for Humanity (OOPSLA 2023)

Conference on Programming Language Design and Implementation (PLDI 2023), PC

International Conference on Software Engineering (ICSE 2023), PC

International Conference on Software Engineering (ICSE 2022), PC

International Symposium on Foundations of Software Engineering (FSE 2022), PC

ACM SIGPLAN conference on Systems, Programming, Languages, and Applications: Software for Humanity (OOPSLA 2021),  EPC

ACM SIGPLAN conference on Systems, Programming, Languages, and Applications: Software for Humanity (OOPSLA 2020), Co-chair for Rebase

Conference on Programming Language Design and Implementation (PLDI 2020), PC

International Conference on Foundations of Software Engineering (FSE 2020), PC

Conference on Programming Language Design and Implementation (PLDI 2019), EPC

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 


Recent Publications

Most of these papers are easily found on ACM Digital Library, Google Scholar or other sites. If you have trouble finding an online copy for a paper, let me know. For a complete list of publications, please see Google Scholar or DBLP.


ML for Developer Productivity

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.

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.

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.

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.

Please look me up on Google Scholar for older publications.