Show simple item record

dc.contributor.advisorArmando Solar̆-Lezama and Sumit Gulwani.en_US
dc.contributor.authorSingh, Rishabhen_US
dc.contributor.otherMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Science.en_US
dc.date.accessioned2015-02-05T18:27:04Z
dc.date.available2015-02-05T18:27:04Z
dc.date.copyright2014en_US
dc.date.issued2014en_US
dc.identifier.urihttp://hdl.handle.net/1721.1/93834
dc.descriptionThesis: Ph. D., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2014.en_US
dc.descriptionCataloged from PDF version of thesis.en_US
dc.descriptionIncludes bibliographical references (pages 143-153).en_US
dc.description.abstractNew computing platforms have greatly increased the demand for programmers, but learning to program remains a big challenge. Program synthesis techniques have the potential to revolutionize programming by making it more accessible. In this dissertation, I present three systems, AutoProf, FlashFill, and Storyboard Programming Tool (SPT), that work towards making programming more accessible to a large class of people, namely students and end-users. The AutoProf (Automated Program Feedback) system provides automated feedback to students on introductory programming assignments. It has been successfully piloted on thousands of student submissions from an edX course and is currently being integrated on the MITx and edX platforms. The FlashFill system helps spreadsheet end-users perform semantic string transformations, number transformations, and table lookup transformations using few input-output examples. A part of the FlashFill system is shipping in Microsoft Excel 2013 and was quoted as one of the top features in Excel by many press articles. Finally, the Storyboard Programming Tool helps students write data structure manipulations using visual examples similar to the ones used in textbooks and classrooms. It has been used to synthesize many textbook manipulations over linked list, binary search trees, and graphs. These systems are enabled by new Program Synthesis techniques. Unlike traditional program synthesis approaches where the primary goal was to derive provably correct programs from a complete specification, these synthesis techniques are designed around natural specification mechanisms and intuitive interaction models. Each system relies on a different synthesis technique, but the techniques can be structured and understood in terms of four major components: -- Specification Mechanism: The way users specify the functional behavior of their intended tasks to the system. Our synthesis techniques support more natural and intuitive forms of specification such as input-output examples, reference implementation, intermediate states etc. -- Hypothesis Space: The hypothesis space defines the space of possible programs the system searches over to synthesize the desired program. The hypothesis space can be fixed or parametrized (user-defined) with additional user inputs. The fixed hypothesis spaces are defined using domain-specific languages (DSL) that exploit the domain knowledge to efficiently structure the hypothesis space, which enables the systems to represent a huge set of expressions in these languages succinctly. The parametric hypothesis spaces are defined using intuitive user inputs that allows users to easily define and control the space of possible programs. -- Synthesis Algorithm: We develop new constraint-based and version-space algebra based synthesis algorithms to efficiently learn programs from a large hypothesis space that conform to the specification. -- User Interaction Model: Finally, the user interaction model determines how users refine their intent and provide additional insights to the system for converging to the desired task. We describe the three systems based on the four components, and present experimental evaluation to show the effectiveness of these systems in practice. We also present related work and some future directions to build upon these techniques to make programming accessible to an even larger class of people.en_US
dc.description.statementofresponsibilityby Rishabh Singh.en_US
dc.format.extentxix, 153 pagesen_US
dc.language.isoengen_US
dc.publisherMassachusetts Institute of Technologyen_US
dc.rightsM.I.T. theses are protected by copyright. They may be viewed from this source for any purpose, but reproduction or distribution in any format is prohibited without written permission. See provided URL for inquiries about permission.en_US
dc.rights.urihttp://dspace.mit.edu/handle/1721.1/7582en_US
dc.subjectElectrical Engineering and Computer Science.en_US
dc.titleAccessible programming using program synthesisen_US
dc.typeThesisen_US
dc.description.degreePh. D.en_US
dc.contributor.departmentMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
dc.identifier.oclc900730877en_US


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record