Results 1  10
of
11
Automating String Processing in Spreadsheets Using InputOutput Examples
"... We describe the design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops. The language is expressive enough to represent a wide variety of string manipulation tasks that endusers struggle with. We describe an algorithm based on ..."
Abstract

Cited by 75 (24 self)
 Add to MetaCart
(Show Context)
We describe the design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops. The language is expressive enough to represent a wide variety of string manipulation tasks that endusers struggle with. We describe an algorithm based on several novel concepts for synthesizing a desired program in this language from inputoutput examples. The synthesis algorithm is very efficient taking a fraction of a second for various benchmark examples. The synthesis algorithm is interactive and has several desirable features: it can rank multiple solutions and has fast convergence, it can detect noise in the user input, and it supports an active interaction model wherein the user is prompted to provide outputs on inputs that may have multiple computational interpretations. The algorithm has been implemented as an interactive addin for Microsoft Excel spreadsheet system. The prototype tool has met the golden test it has synthesized part of itself, and has been used to solve problems beyond author’s imagination.
Synthesizing geometry constructions
 In PLDI
, 2011
"... In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new progr ..."
Abstract

Cited by 29 (16 self)
 Add to MetaCart
(Show Context)
In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new program synthesis technique based on three key insights: (i) reduction of symbolic reasoning to concrete reasoning (based on a deep theoretical result that reduces verification to random testing), (ii) extending the instruction set of the programming language with higher level primitives (representing basic constructions found in textbook chapters, inspired by how humans use their experience and knowledge gained from chapters to perform complicated constructions), and (iii) pruning the forward exhaustive search using a goaldirected heuristic (simulating backward reasoning performed by humans). Our tool can successfully synthesize constructions for various geometry problems picked up from highschool textbooks and examination papers in a reasonable amount of time. This opens up an amazing set of possibilities in the context of making classroom teaching interactive.
Automatically Generating Algebra Problems
"... We propose computerassisted techniques for helping with pedagogy in Algebra. In particular, given a proof problem p (of the form Lefthandsideterm = Righthandsideterm), we show how to automatically generate problems that are similar to p. We believe that such a tool can be used by teachers in m ..."
Abstract

Cited by 18 (10 self)
 Add to MetaCart
(Show Context)
We propose computerassisted techniques for helping with pedagogy in Algebra. In particular, given a proof problem p (of the form Lefthandsideterm = Righthandsideterm), we show how to automatically generate problems that are similar to p. We believe that such a tool can be used by teachers in making examinations where they need to test students on problems similar to what they taught in class, and students in generating practice problems tailored to their specific needs. Our first insight is that we can generalize p syntactically to a query Q that implicitly represents a set of problems [[Q]] (which includes p). Our second insight is that we can explore the space of problems [[Q]] automatically, use classical results from polynomial identity testing to generate only those problems in [[Q]] that are correct, and then use pruning techniques to generate only unique and interesting problems. Our third insight is that with a small amount of manual tuning on the query Q, the user can interactively guide the computer to generate problems of interest to her. We present the technical details of the above mentioned steps, and also describe a tool where these steps have been implemented. We also present an empirical evaluation on a wide variety of problems from various subfields of algebra including polynomials, trigonometry, calculus, determinants etc. Our tool is able to generate a rich corpus of similar problems from each given problem; while some of these similar problems were already present in the textbook, several were new! 1
Building Data Integration Queries by Demonstration
"... The magnitude of data available on the web prompts the need for an easy to use query interface that enables users to integrate data from multiple web sources in an intelligent fashion. Past work in the area of databases has resulted in different query interface systems that simplify query formulatio ..."
Abstract

Cited by 16 (5 self)
 Add to MetaCart
(Show Context)
The magnitude of data available on the web prompts the need for an easy to use query interface that enables users to integrate data from multiple web sources in an intelligent fashion. Past work in the area of databases has resulted in different query interface systems that simplify query formulation. While these approaches reduce the user’s effort to compose queries, the user is still required to pick data sources to use and the interaction is not guaranteed to yield a nonempty result set. We introduce a novel approach that exploits the structure of the relational data source(s) to formulate a set of constraints. These constraints are used in conjunction with partial plans to produce an intelligent query interface that (a) does not require the user to know details about data sources or existing values (b) suggests valid inputs to the user (c) creates consistent queries that always return values. ACM Classification Keywords
Programming by demonstration framework applied to procedural math problems
, 2013
"... K12 mathematics includes many procedures to be learned, such as addition and subtraction, and there are many “buggy ” or incorrect procedures that students demonstrate during this learning process. Learning such procedures (both correct and incorrect) from demonstration traces has various applica ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
K12 mathematics includes many procedures to be learned, such as addition and subtraction, and there are many “buggy ” or incorrect procedures that students demonstrate during this learning process. Learning such procedures (both correct and incorrect) from demonstration traces has various applications in computeraided education. We formalize mathematical procedures as spreadsheet programs, involving loops and conditionals over a given set of base operators, and present a novel algorithm for synthesizing such procedures from demonstrations. Our algorithm is based on dynamic programming and leverages ideas from versionspace algebras and templatebased program synthesis. Our implementation efficiently synthesized programs to solve 20 common math procedures and reproduce 28 different kinds of bugs that were demonstrated by real students across 9 procedures. Our implementation significantly outperforms SKETCH, a state of the art program synthesizer, on these tasks. We also demonstrate the applicability of our generic program synthesis technology to spreadsheet table transformations, an important domain in enduser programming. 1.
Algorithms, Theory
"... In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new progr ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
In this paper, we study the problem of automatically solving ruler/compass based geometry construction problems. We first introduce a logic and a programming language for describing such constructions and then phrase the automation problem as a program synthesis problem. We then describe a new program synthesis technique based on three key insights: (i) reduction of symbolic reasoning to concrete reasoning (based on a deep theoretical result that reduces verification to random testing), (ii) extending the instruction set of the programming language with higher level primitives (representing basic constructions found in textbook chapters, inspired by how humans use their experience and knowledge gained from chapters to perform complicated constructions), and (iii) pruning the forward exhaustive search using a goaldirected heuristic (simulating backward reasoning performed by humans). Our tool can successfully synthesize constructions for various geometry problems picked up from highschool textbooks and examination papers in a reasonable amount of time. This opens up an amazing set of possibilities in the context of making classroom teaching interactive.
Algorithms, Human Factors
"... We describe the design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops. The language is expressive enough to represent a wide variety of string manipulation tasks that endusers struggle with. We describe an algorithm based on ..."
Abstract
 Add to MetaCart
(Show Context)
We describe the design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops. The language is expressive enough to represent a wide variety of string manipulation tasks that endusers struggle with. We describe an algorithm based on several novel concepts for synthesizing a desired program in this language from inputoutput examples. The synthesis algorithm is very efficient taking a fraction of a second for various benchmark examples. The synthesis algorithm is interactive and has several desirable features: it can rank multiple solutions and has fast convergence, it can detect noise in the user input, and it supports an active interaction model wherein the user is prompted to provide outputs on inputs that may have multiple computational interpretations. The algorithm has been implemented as an interactive addin for Microsoft Excel spreadsheet system. The prototype tool has met the golden test it has synthesized part of itself, and has been used to solve problems beyond authors ’ imagination.
Languages, Theory
"... Program Synthesis, which is the task of discovering programs that realize user intent, can be useful in several scenarios: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, program understanding, dis ..."
Abstract
 Add to MetaCart
(Show Context)
Program Synthesis, which is the task of discovering programs that realize user intent, can be useful in several scenarios: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, program understanding, discovery of new algorithms, and even teaching. This paper describes three key dimensions in program synthesis: expression of user intent, space of programs over which to search, and the search technique. These concepts are illustrated by brief description of various program synthesis projects that target synthesis of a wide variety of programs such as standard undergraduate textbook algorithms (e.g., sorting, dynamic programming), program inverses (e.g., decoders, deserializers), bitvector manipulation routines, deobfuscated programs, graph algorithms, textmanipulating routines, mutual exclusion algorithms, etc. Categories and Subject Descriptors D.1.2 [Programming Techniques]:
MIT CSAIL
"... We propose computerassisted techniques for helping with pedagogy in Algebra. In particular, given a proof problem p (of the form Lefthandsideterm = Righthandsideterm), we show how to automatically generate problems that are similar to p. We believe that such a tool can be used by teachers in ..."
Abstract
 Add to MetaCart
(Show Context)
We propose computerassisted techniques for helping with pedagogy in Algebra. In particular, given a proof problem p (of the form Lefthandsideterm = Righthandsideterm), we show how to automatically generate problems that are similar to p. We believe that such a tool can be used by teachers in making examinations where they need to test students on problems similar to what they taught in class, and by students in generating practice problems tailored to their specific needs. Our first insight is that we can generalize p syntactically to a query Q that implicitly represents a set of problems [[Q]] (which includes p). Our second insight is that we can explore the space of problems [[Q]] automatically, use classical results from polynomial identity testing to generate only those problems in [[Q]] that are correct, and then use pruning techniques to generate only unique and interesting problems. Our third insight is that with a small amount of manual tuning on the query Q, the user can interactively guide the computer to generate problems of interest to her. We present the technical details of the above mentioned steps, and also describe a tool where these steps have been implemented. We also present an empirical evaluation on a wide variety of problems from various subfields of algebra including polynomials, trigonometry, calculus, determinants etc. Our tool is able to generate a rich corpus of similar problems from each given problem; while some of these similar problems were already present in the textbook, several were new! 1
Abstract Automatic Scaffolding for Procedural Learning
, 2014
"... A key challenge in education is how provide support that is tailored to the learner’s individual needs. Effective teachers and curricula typically provide such support, often referred to as instructional scaffolding, through the development of progressions of practice problems, stepbystep demonst ..."
Abstract
 Add to MetaCart
(Show Context)
A key challenge in education is how provide support that is tailored to the learner’s individual needs. Effective teachers and curricula typically provide such support, often referred to as instructional scaffolding, through the development of progressions of practice problems, stepbystep demonstrations, and strategies for diagnosing misconceptions. This process is often tedious and timeconsuming. Furthermore, it typically requires a large amount of design by experts and little can be reused across educational domains. As a result, creating adaptive educational content often remains prohibitively difficult. This thesis presents a general framework for constructing instructional scaffolding for procedural learning, a key domain of learning in which the goal is to learn a stepbystep procedure. In contrast to previous approaches that require a large amount of domainspecific authoring, this framework takes as input only the procedure to be learned and produces scaffolding automatically. Directly encoding procedural knowledge in this way allows us to leverage techniques from the software engineering community. The framework uses test input generation tools to synthesize systematic progressions of practice problems that start easy, grow more difficult, adapt to the learner, and ultimately cover all of the important