DreamCoder is a program synthesis system described in “DreamCoder: Growing generalizable, interpretable knowledge with wake-sleep Bayesian program learning” (arXiv, June 2020, by Kevin Ellis, Catherine Wong, Armando Solar-Lezama, Joshua Tenenbaum, and colleagues). It learns to solve problems by writing code, and crucially, it learns its own domain-specific programming language as it goes.
The system runs a wake-sleep loop. In the wake phase it searches for programs that solve training tasks, guided by a neural network that proposes promising program structures. In the sleep phases it grows a library by abstracting reusable components out of the programs it found, and it trains the neural network on both real and self-generated (“dreamed”) problems. Over time this builds up increasingly powerful, interpretable abstractions. The authors show DreamCoder solving tasks from classic inductive programming to drawing and physics, and report that it rediscovered foundational ideas such as functional programming primitives and basic physical laws on its own.
DreamCoder is a landmark in the neuro-symbolic tradition: rather than treating code as just text to predict, it combines symbolic program search with learned neural guidance and explicit concept libraries. For a general reader it offers a different vision of machine learning, one where a system accumulates reusable, human-readable knowledge instead of opaque weights.