{"id":829369,"date":"2022-03-23T20:56:53","date_gmt":"2022-03-24T03:56:53","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&p=829369"},"modified":"2024-02-06T14:36:42","modified_gmt":"2024-02-06T22:36:42","slug":"shaping-the-future-with-sumit-gulwani","status":"publish","type":"msr-research-item","link":"https:\/\/www.microsoft.com\/en-us\/research\/publication\/shaping-the-future-with-sumit-gulwani\/","title":{"rendered":"Shaping the future with: Sumit Gulwani"},"content":{"rendered":"
In our series “Shaping the future with” we introduce you to interesting personalities who are working on future technologies. This time with Sumit Gulwani from Microsoft Research. He explains why the computers of the future will understand us humans better.<\/em><\/p>\n Sumit Gulwani founded and currently leads the PROSE<\/a> research and development team at Microsoft Research, which develops techniques for program synthesis <\/em>and incorporates them into various mass-market products. He has made his mark on his field of research<\/p>\n with his work. Program synthesis is the ability to automatically generate intended computer programs from natural forms of intent specification such as input-output examples, natural language, or sometimes even predictively from the static or temporal coding context. Among other things, he is the inventor of the popular Flash Fill feature in Microsoft Excel<\/a>, which automatically inserts data into an Excel column as soon as it recognizes a pattern as to how it relates to other columns.<\/p>\n We spoke with Sumit about his groundbreaking work, which was recently awarded the Max Planck-Humboldt Medal 2021. <\/a>We also talked about how program synthesis makes life easier for all of us and the impact it can have on education.<\/p>\n <\/p>\n You were recently awarded the Max Planck Humboldt Medal 2021 for your achievements in the field of program synthesis. How would you explain your field of research to a child?<\/strong><\/p>\n Sumit: “The techniques of program synthesis allow users to express a process in the most natural way, for instance, through examples <\/strong>or through a description in natural language<\/strong>, without having to program with a strict and sometimes difficult to understand syntax.<\/p>\n I showed Sumay that the Flash Fill function in Excel, <\/a>which I developed in 2010, is smart enough to solve such analogy tasks. \u00a0And it does so by generating a program from very few representative input-output examples, which is then run with new inputs to get the desired outputs. This is called program synthesis using examples. <\/strong>This video<\/a> shows how it works in Excel.<\/p>\n While examples can sometimes be an easy way to communicate the intent of a computation, other tasks are best described in natural language. <\/strong>This can be well explained with a problem from Sumay’s math curriculum:<\/p>\n Sumay has a large list with the number of stars that students from various classes have received. Now he has to determine “which class received the most stars”. Natural-language program synthesis techniques can translate such literal descriptions into executable programs over tables (such as SQL queries or spreadsheet formulas). This allows Sumay to quickly determine the result without a manual calculation.<\/p>\n These techniques have shaped automatic programming. They have shown that programs can be efficiently generated from imprecise specifications and that program synthesis can not only help computer professionals with complicated algorithms but also computer users with relatively simple programs or program snippets. Recently, I learned that Flash Fill is part of several middle school computing textbooks in India.”<\/p>\n <\/p>\n To what extent do you think improvements in program synthesis can empower individuals and organizations to shape our future?<\/strong><\/p>\n Sumit: “Computer technology has permeated all aspects of our lives. However, 99 percent of computer users cannot program and therefore struggle with tedious, repetitive tasks. Programming as it exists today is an artificial barrier to effective and creative use of computers.<\/p>\n For example, Sumay’s teacher could have sent each student their own password if she could have created a program to do so. The techniques of program synthesis by demonstration <\/strong>can watch Sumay’s teacher send a couple of these personalized emails and then offer to send them to the rest of the children in the class.<\/p>\n Data scientists spend a lot of time manipulating data, cleaning it, transforming it, and analyzing it. This data manipulation can be accelerated by program synthesis. For instance, the data connectors in Microsoft\u2019s PowerQuery engine<\/a> synthesize parsing scripts from examples to extract tabular data from semi-structured documents like custom text files or webpages. Recently, we were pleased to see them used to create dashboards for various Covid 19 datasets.<\/p>\n Developers spend most of their time writing templatized code or in code maintenance tasks such as refactoring code, merge conflict resolution, and doing repetitive edits to fix bugs. Program synthesis can help with these tasks, acting as an AI-powered pair programmer to make suggestions as you work. Our IntelliCode Suggestions <\/a>feature in Visual Studio is one such form factor for this use case.<\/p>\n The latest addition to the bunch, GitHub’s CoPilot, <\/a>which is based on the pre-trained model Codex <\/a>developed by OpenAI, has captured the imagination of the world. It predicts code fragments – using natural language comments and previous code context. We are on the cusp of a disruption that AI-powered pair programming will bring. ”<\/p>\n <\/p>\n Lately, you’ve been using program synthesis tools for education. How can program synthesis support programming education, learning feedback, grades, and more? Where do you see possible future applications in education?<\/strong><\/p>\n Sumit: “A single teacher attends to many students in a classroom, so individuals cannot receive personalized feedback. Online courses with many participants exacerbate this problem.<\/p>\n<\/p>\n
The other day I was explaining the two techniques to my son Sumay, who needs his own passwords for many digital applications at his primary school. The teacher communicated these passwords by emailing an example of how to derive them from a student name and ID, \u201cif your name is: Alex Zorn and ID is 12345678, then your password is a-ZORN#1234.\u201d<\/p>\n
<\/p>\n
Program synthesis can also support computer professionals such as data scientists or developers.<\/p>\n