Reinforcement Learning

Reinforcement learning learns how to 'move' in an abstract space based on past success and failure. In the context of programming languages, the abstract space could be the space of partial programs and each move modifies the partial program in some say. Thus, reinforcement learning can be used for program synthesis.