The limitation of the current program synthesis method is that the synthesized program is small in scale and simple in logic. In this work, we introduce an effective program synthesis approach based on algorithm pseudocode. By parsing the pseudocode, critical information like control structure framework and variable names can be obtained which are used to guide the process of synthesis. Experiments show that information extracted from pseudocode helps to reduce the space of programs and enhance the ability of the synthesizer. It can synthesize some complex programs with control structures.
A Program Synthesis Approach for Adding Architectural Tactics to An Existing Code Base
Automatically constructing a program based on desired specifications has been studied for decades. Despite the advances in the field of Program Synthesis, the current approaches still synthesize a secluded code snippet and leave the task of reusing it in an existing code base to program developers. Due to its program-wide effects, synthesizing an architectural tactic and reusing it in a program is even more challenging. Architectural tactics need to be synthesized based on the context of different locations of the program, broken down to smaller pieces, and added to corresponding locations in the code. Moreover, each piece needs to establish correct data- and control-dependencies to its surrounding environment as well as to the other synthesized pieces. This is an error-prone and challenging task, especially for novice program developers.
In this paper, we introduce a novel program synthesis approach that synthesizes architectural tactics and adds them to an existing code base.
Program Synthesis with Algorithm Pseudocode Guidance
The limitation of the current program synthesis method is that the synthesized program is small in scale and simple in logic. In this work, we introduce an effective program synthesis approach based on algorithm pseudocode. By parsing the pseudocode, critical information like control structure framework and variable names can be obtained which are used to guide the process of synthesis. Experiments show that information extracted from pseudocode helps to reduce the space of programs and enhance the ability of the synthesizer. It can synthesize some complex programs with control structures.
py2src: Towards the Automatic (and Reliable) Identification of Sources for PyPI Package
Selecting which libraries (‘dependencies’ or ‘packages’ in the industry’s jargon) to adopt in a project is an essential task in software development. The quality of the corresponding source code is a key factor behind this selection (from security to timeliness). Yet, how easy is it to find the ‘actual’ source? How reliable is this information? To address this problem, I developed an approach called py2src to automatically identify GitHub source code repositories corresponding to packages in PyPI and automatically provide an indicator of the reliability of such information. I also report a preliminary empirical evaluation.