End-User Programming and Intelligent Tutoring Systems
Millions of end users today have access to programmable environments such as spreadsheets and smartphones, but lack the programming expertise to write even small scripts. These users can effectively communicate their intent using examples and natural language. Our methodology involves designing a domain-specific language (DSL), developing a synthesis algorithm for learning programs in the DSL that match the user's (often under-specified) intent, and using machine learning to rank these programs. In this talk, I will demonstrate this methodology for various domains including spreadsheet macros, database queries, and smartphone scripts.
In the second half of the talk, I will present surprising applications of this synthesis methodology in the area of intelligent tutoring systems including problem generation, solution generation, and feedback generation. I will demonstrate these applications for various domains including arithmetic, algebra, geometry, logic, automata theory, and introductory programming. The underlying synthesizers leverage search techniques from various communities including use of SAT/SMT solvers (formal methods community), version space algebras (machine learning community), and A*-style goal-directed heuristics (AI community).