Programowanie ewolucyjne (ang. Evolutionary Programming, EP) jest podzbiorem algorytmów ewolucyjnych.
Podstawy programowania ewolucyjnego opracował Lawrence Fogel, zaś rozwinął je jego syn, David Fogel. Celem programowania ewolucyjnego miał być rozwój sztucznej inteligencji, w sensie rozwoju możliwości przewidywania zmian w otoczeniu. Otoczenie opisywane było sekwencją symboli, a algorytm ewolucyjny miał tworzyć nowy symbol. Wyjściowy symbol maksymalizował funkcję wypłaty oceniającą dokładność dokonanego przewidywania.
Reprezentacje używane w programowaniu ewolucyjnym są zwykle dopasowane do domeny problemu. Najczęściej wykorzystywaną reprezentacją jest utworzony z liczb rzeczywistych wektor o stałej długości. Zasadnicza różnica między programowaniem ewolucyjnym a innymi podejściami (GA, GP, ES) polega na tym, że nie zachodzi tu wymiana materiału pomiędzy poszczególnymi członkami populacji. Wykorzystywana jest jedynie mutacja.