The term ``dynamic programming'' is incredibly misleading.
It's one of the main techniques I use in my work, but when I tell people that's what I do, a substantial percentage think it has something to do with self-modifying code.
As cool as that is, it's not what I do.
Dynamic programming is neither especially dynamic nor especially program related.
The term was coined (I think) 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.
Pretty mundane, eh?
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.