Open AccessDissertation
Accessible programming using program synthesis
Rishabh Singh
- 01 Jan 2014
5
TL;DR: This dissertation presents 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.
read more
Abstract: New 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…
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Data representation synthesis
Peter Hawkins,Alex Aiken,Kathleen Fisher,Martin Rinard,Mooly Sagiv +4 more
- 01 Jun 2011
TL;DR: A language of decompositions that permit the user to specify different concrete representations for relations, and it is shown that operations on concrete representations soundly implement their relational specification.
54
Automated Data-Driven Hint Generation in Intelligent Tutoring Systems for Code-Writing: On the Road of Future Research
TL;DR: The goal in this paper is to review and classify analysis techniques that are requested to generate data-driven hints in ITSs for programming, and to identify the possible future directions in this research field.
Concurrent data representation synthesis
Peter Hawkins,Alex Aiken,Kathleen Fisher,Martin Rinard,Mooly Sagiv +4 more
- 01 Jun 2012
TL;DR: In this paper, a compiler takes as input a program written using concurrent relations and synthesizes a representation of the relations as sets of cooperating data structures as well as the placement and acquisition of locks to synchronize concurrent access to those data structures.
3
A Machine Learning Framework for Programming by Example
Aditya Krishna Menon,Omer Tamuz,Sumit Gulwani,Butler W. Lampson,Adam Tauman Kalai +4 more
- 07 Nov 2016
TL;DR: It is shown how machine learning can be used to speed up this seemingly hopeless search problem, by learning weights that relate textual features describing the provided input-output examples to plausible sub-components of a program.
Aprendendo estratégias programáticas através de características comporta- mentais
David da Silva Aleixo
TL;DR: A síntese de estratégias programáticas é uma tarefa desafiadora devido à necessidade de realizar uma busca não diferenciável em um grande espaço de programas. Dois métodos são propostos para guiar a busca: uma Utilizing as características comportamentais provenientes de um oráculo para aprender um sketch de uma estratégia programática e outra que busca concorrentemente no espaço de programas e em um espaço de características comportamentais.
References
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
Patrick Cousot,Radhia Cousot +1 more
- 01 Jan 1977
TL;DR: In this paper, the abstract interpretation of programs is used to describe computations in another universe of abstract objects, so that the results of abstract execution give some information on the actual computations.
Learning to rank using gradient descent
Chris J.C. Burges,Tal Shaked,Erin L. Renshaw,Ari Lazier,Matt Deeds,Nicole A. Hamilton,Greg Hullender +6 more
- 07 Aug 2005
TL;DR: RankNet is introduced, an implementation of these ideas using a neural network to model the underlying ranking function, and test results on toy data and on data from a commercial internet search engine are presented.
Learning to rank: from pairwise approach to listwise approach
Zhe Cao,Tao Qin,Tie-Yan Liu,Ming-Feng Tsai,Hang Li +4 more
- 20 Jun 2007
TL;DR: It is proposed that learning to rank should adopt the listwise approach in which lists of objects are used as 'instances' in learning, and introduces two probability models, respectively referred to as permutation probability and top k probability, to define a listwise loss function for learning.
2.4K
Duplicate Record Detection: A Survey
Elmagarmid,Ipeirotis,Verykios +2 more
TL;DR: This paper presents an extensive set of duplicate detection algorithms that can detect approximately duplicate records in a database and covers similarity metrics that are commonly used to detect similar field entries.
•Proceedings Article
An Efficient Boosting Algorithm for Combining Preferences
Yoav Freund,Raj D. Iyer,Robert E. Schapire,Yoram Singer +3 more
- 24 Jul 1998
TL;DR: RankBoost as discussed by the authors is an algorithm for combining preferences based on the boosting approach to machine learning, which can be applied to several applications, such as that of combining the results of different search engines, or the "collaborative filtering" problem of ranking movies for a user based on movie rankings provided by other users.
2K