Inductive programming (IP) research – also called inductive program synthesis – is concerned with learning computer programs from data, typically input/output examples. It incorporates many areas of computer science, especially machine learning, automated reasoning, program verification, programming language theory, and software engineering. IP also has strong relations to research outside computer science, notably in cognitive science, where it can help build models of human inductive learning and intelligent tutoring systems for programming education. In industry, IP supports tools for end-user programming such as the Microsoft Excel plug-in FlashFill.