PBE for Data Wrangling: From program synthesis to intent disambiguation

Tuesday, May 1, 2018 -
11:00am to 4:30pm

Speaker Name: 

Gustavo Soares, Arjun Radhakrishna

Speaker Institution: 





PROSE: Learning Programs from Examples (hands-on Tutorial)

Program synthesis is the task of automatically finding a program in the underlying programming language that satisfies the user intent expressed
in the form of some specification. Since the inception of AI in the 1950s,
this problem has been considered the holy grail of Computer Science.
Despite inherent challenges in the problem such as ambiguity of user intent
and a typically enormous search space of programs, the field of program
synthesis has developed many different techniques that enable program
synthesis in different real-life application domains. In this workshop, we will
present the Microsoft PROSE SDK, a framework of technologies for programming
by examples. PROSE has been used to create program-by-example technologies
for different Microsoft products such as Excel, Powershell, Azure ML, and SQL
Management Studio. A short demo showing the latest PROSE-based applications
can be found at https://microsoft.github.io/prose/demo/prose-showcase.mp4.
In the first part of this workshop, Arjun Radhakrishna will
give a research talk about the underlying PROSE technology. In the second part
of the workshop, Gustavo Soares will conduct a hands-on tutorial where he
will teach how to build programming-by-example solutions using PROSE.

Tuesday, May 1, 11-12:15 am. PROSE Overview
The first part of the tutorial will consist of a 20 min talk where we will
introduce program synthesis and present the main components of the
PROSE framework.
We will use PROSE to build a synthesizer that learns string transformation
tasks from examples similar to the FlashFill feature in Excel (see the
FlashFill demo at https://www.youtube.com/watch?v=qHkgJFJR5cM). This will be
a hands-on tutorial where everyone will have a chance to try to build a synthesizer
in their one machines. Instructions to install and configure PROSE for the tutorial
can be found at https://github.com/Microsoft/prose/tree/master/DslAuthoringTutorial.
In this part of the tutorial, we will teach how to specify the syntax and semantics
of the DSL and the synthesis algorithms for synthesizing programs in this DSL
from examples.

Tuesday, May 1, Afternoon 12.15-5 pm. Hands-on Tutorial
In the afternoon, we will continue to build our synthesizer by adding more powerful
components such as a ranking system to disambiguate programs that satisfy all examples
and new DSL operators to improve the expressivity of our string transformation language.