Program Synthesis Driven Software Engineering

25 February 2021, Co-located with ISEC 2021

Thanks for your participation.

Recording of Session-1

Recording of Session-2

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.

Objective

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

Schedule

The workshop will be organized into two sessions.

  1. Morning session 8.30 AM to 11.30 AM (Session chair : Raveendra Kumar)

  1. Evening session 5.00 PM to 8.30 PM (Session chairs: Deepak D'Souza, Rahul Sharma)

Organizing Committee

TCS Research , Bangalore

raveendra.kumar@tcs.com

Indian Institute of Science, Bangalore

deepakd@iisc.ac.in

Microsoft Research, Bangalore

rahsha@microsoft.com

Important Dates

Workshop date : 25th February, 2021



Venue


14th Innovations in Software Engineering Conference

25-27 February 2021