Genetic programming is an evolutionary computation technique that can automatically solve problems without requiring the user to specify the form of the solution in advance. It works by generating an initial population of computer programs randomly, then uses genetic operations like crossover and mutation to breed new programs, evaluating their fitness at each generation. The fittest programs survive and produce offspring for the next generation. Programs in GP are represented as syntax trees with functions as internal nodes and variables/constants as leaves. GP has been successfully applied to problems like circuit design, predictive modeling, and control systems optimization.