Millions of end users today have access to programmable environments such as spreadsheets and smartphones, but lack the programming expertise to write even small scripts. These users can effectively communicate their intent using examples and natural language. Our methodology involves designing a domain-specific language (DSL), developing a synthesis algorithm for learning programs in the DSL that match the user's (often under-specified) intent, and using machine learning to rank these programs. In this talk, I will demonstrate this methodology for various domains including spreadsheet macros, database queries, and smartphone scripts.
In the second half of the talk, I will present surprising applications of this synthesis methodology in the area of intelligent tutoring systems including problem generation, solution generation, and feedback generation. I will demonstrate these applications for various domains including arithmetic, algebra, geometry, logic, automata theory, and introductory programming. The underlying synthesizers leverage search techniques from various communities including use of SAT/SMT solvers (formal methods community), version space algebras (machine learning community), and A*-style goal-directed heuristics (AI community).
Sumit Gulwani is a researcher at Microsoft Research, Redmond. His research interests are in the cross-disciplinary application areas of automating end-user programming (for spreadsheets, smartphones, robots), and in building intelligent tutoring systems (for K-14 math/programming/science/language subjects). He has expertise in program synthesis (from examples, natural language, logic) and program analysis techniques. Sumit obtained his Phd in Computer Science from UC-Berkeley in 2005, and was awarded the ACM SIGPLAN Outstanding Doctoral Dissertation Award. He obtained his BTech in Computer Science and Engineering from IIT Kanpur in 2000, and was awarded the President's Gold Medal.