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 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
"CRQBench: A Benchmark of Code Reasoning Questions", with E. Dinella and P. Maniatis, arXiv 2408.08453
"Natural Language Outlines for Code: Literate Programming in the LLM Era", with K. Shi, et al, arXiv 2408.04820
"Resolving Code Review Comments with Machine Learning", with A. Frommgen et al, in ICSE SEIP 2024
"What do developers want from AI", with S D'Angelo, A. Murillo and A Macvean, in IEEE Software 2024
"Expert Perspectives on Explanability", with J. Cito, H. Hemmati, C. Thantithamthavorn, in IEEE Software 2023
"Explainable AI for SE: Challenges and Future Direction", with C. Thantithamthavorn, J. Cito, H. Hemmati, in IEEE Software 2023
"Leveraging Test Plan Quality to Improve Code Review Efficiency", with L. Chen et al, in FSE 2022
"Predictive Synthesis of API-centric Code", with Daye Nam, B. Ray, S. Kim, and X. Qu, in MAPS 2022
"Counterfactual Explanations for Models of Code", with J. Cito, I. Dillig, and V. Murali, in ICSE SEIP 2022
"Mining Idioms in the Wild", with A. Sivaraman, R. Abreu, T. Akomolede and A. Scott, in ICSE SEIP 2022
"Neural Software Analysis", with M. Pradel, in CACM 2022
"Explaining Mispredictions of ML Models using Rule Induction", with J. Cito, I. Dillig, V. Murali and S. Kim, in ESEC/FSE 2021
"Code Prediction by Feeding Trees to Transformers", with S. Kim, J. Zhao and Y. Tian, to appear in ICSE 2021
"Industry-scale IR-based Bug Localization: A Perspective from Facebook", with V. Murali, L. Gross, and R. Qian, to appear in ICSE SEIP 2021
"Scalable Statistical Root Cause Analysis on App Telemetry", with V. Murali, E. Yao, and U. Mathur, to appear 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, to appear in ICSE SEIP 2021
"TypeWriter: Neural Type Prediction with Search-based Validation", with M. Pradel, G. Gousios, and J. Liu, to appear 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, to appear in ISSTA 2020
"Debugging Crashes Using Continuous Contrast Set Mining", with R. Qian, Y. Yu, W. Park, V. Murali, and S. Fink, to appear 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.
"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 Jason Liu, Sonia Kim, Vijayaraghavan Murali, and Swarat Chaudhuri, in MAPL 2019
"Predictive Test Selection", with Mateusz Machalica, Alex Samylkin, Meredith Porth, Satish Chandra, in ICSE (SEIP) 2019
"SapFix: Automated End-to-end Repair at Scale", with Alexandru Marginean, Johannes Bader, Mark Harman, Yue Jia, Ke Mao, Alexander Mols, and Andrew Scott, in ICSE (SEIP) 2019
"Retrieval on source code: a neural code search", with Saksham Sachdev, Hongyu Li, Sifei Luan, Seohyun Kim, and Koushik Sen, in MAPL 2018
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.
"Lessons from the Tech Transfer Trenches", with Suresh Thummalapenta and Saurabh Sinha, appears in CACM Feb 2016.
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.
"Formula-based Software Debugging" with Abhik Roychoudhury, appears in CACM July 2016,
"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.
"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.
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 Google Scholar for older publications.