Program Synthesis Driven Software Engineering

Program Synthesis

Program synthesis is an automated technique to infer programs in a domain-specific programming language (DSL) as per a specification provided by the user. Though it has been studied for many decades, it has only recently started becoming a mainstream tool to solve several tasks, due to advancements in search techniques and solver technology. Synthesis techniques typically generate a set of candidate programs by searching the program space for programs that satisfy the given specification and selects the best program among the candidates based on an optimization criterion. If the specification is complete, then the generated program is exact. However, if the specification is partial such as input/output examples, the users may get a desirable program after a few iterations by refining the specifications and re-synthesizing the program.

Program synthesis has been successfully applied to automate data wrangling tasks such data extraction, transformation, cleansing, and software engineering tasks such as inferring program invariants, program and database refactoring, program repair etc. Recently, program synthesis has been used in conjunction with NLP techniques in order to extract domain specific entities from text documents.

Building a synthesizer requires identifying a suitable specification mechanism, a DSL to restrict the program search space, the program search algorithm, and an ambiguity resolution procedure to select an optimal program from the candidates. Hence designing and developing a synthesizer is a non-trivial activity without the help of a suitable tool set and expert knowledge. As a result it is yet to become a mainstream technique for software construction and maintenance.


The objective of this workshop is to address the key issues in the application of program synthesis techniques and tools to solve software engineering tasks by software practitioners.

Workshop goals :

  • Provide a venue to discuss various issues in adopting program synthesis as a mainstream tool in the software industry.

  • Enable participants to share their experience with program synthesis to automate software engineering tasks.

  • To share various tools and techniques and the class of problems that they can effectively address.

  • To discuss future research directions in the program synthesis space including its adoption in the software engineering lifecycle.

Topics of Interest

Indicative list of topics

Program Synthesis Applications

  • Data transformation
  • Source code transformation
  • Code repair

Tools and Techniques

  • Specifications mechanism
  • Program search techniques
  • Disambiguation techniques

Innovative application of Program synthesis and Machine Learning

Key Note 1
Rajeev Alur

Zisman Family Professor
Department of Computer and Information Science, University of Pennsylvania

More Details
Key Note 2
Ashish Tiwari

Researcher, Microsoft

More Details
Tutorial 1
Armando Solar-Lezama

Full Professor, Associate Director and COO of CSAIL, Massachusetts Institute of Technology (MIT)

More Details
Tutorial 2
Yu Feng

Assistant Professor, Computer Science, University of California

More Details


The workshop will be organized into two sessions.

  1. Morning session 8.30 AM to 11.30 AM
  2. Evening session 5.00 PM to 8.30 PM