Dynamic programming is neither especially dynamic nor especially program related.
The term was coined by Richard Bellman in the late 50s to describe an algorithm-design technique in which an optimization problem is solved by filling in values in a table.
Various dynamic-programming algorithms have a similar flavor, but there is no single algorithm that gives you the whole story. Instead, it is usually taught by example.