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 (updated Aug 2024)


Blog posts

For an overview of some of his work on ML applied to developer productivity:

Blog post on our ongoing AI-for-SE work at Google https://research.google/blog/ai-in-software-engineering-at-google-progress-and-the-path-ahead/

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

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/


Recent items of note

I presented a talk at the Distinguised Speaker Series at CMU S3D. Nov 2024.

Google CEO spoke about the impact of our work at Google in the quarterly earnings report: 25% of all new code at Google written by AI. Oct 2024.

I attended and gave a talk at a Dagstuhl seminar on Automatic Programming and Program Repair, Oct 2024

I presented a seminar at the International Center for Theoretical Studies in Bengaluru, July 2024

I gave an invited talk at the AIware 2024 conference, July 2024 

"Resolving Code Review Comments with Machine Learning", with several colleagues, at ICSE SEIP 2024 won a SIGSOFT Distinguished Paper Award

I gave an invited talk at FM+SE 2024 in Tokyo

I co-organized a Dagstuhl seminar on Code Search, with M. Pradel and K. Stolee, April 2024

I served as the general chair of FSE 2023 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

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

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

I gave a summer school mini-course on "Machine Learning for Developer Productivity " at ECOOP/ISSTA 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.

Co-organized REBASE with OOPSLA 2020

"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.

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

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

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

Started working at Facebook, November 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 serve as an Associate Editor on the board of the IEEE Transactions in Software Engineering

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

ACM Conference on Principles of Programming Languages (POPL 2025), PC

International Conference on Software Engineering (ICSE 2025), PC

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

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.