I am reading about Dynamic Programming from Cormen.
In the beginning of the chapter it says (relating to the term Dynamic Programming):

"Programming” in this context refers to a tabular method, not to writing computer code.

I can not really understand what this statement means.
I mean, I understand that the dynamic programming algorithms look up solutions, but I get a feeling that this point here defines something fundamental on the Dynamic Programming that I am not grasping.
Any help?

  • It's been a while since I've studied this but I think by "tabular method" he means creating and populating a table that contains all possible solutions for the given inputs, but posting as a comment because I'm not really sure anymore. :/ Jan 10, 2012 at 16:56
  • But creating and populating a table, isn't it considered programming?I get the feeling the book means something more here
    – user10326
    Jan 10, 2012 at 17:07
  • Maybe it just means that the term "Dynamic Programming" has "Programming" in the name, but is really an algorithm, not the implementation of an algorithm in code.
    – psr
    Jan 10, 2012 at 17:43
  • @user10326: Yes, and the table is populated by code. Mostly like it's implemented as arrays. The term refers to a style of problem-solving that is usually implemented with actual program code. Jan 10, 2012 at 17:59

2 Answers 2


Dynamic programming was invented in the first half of the 20th century, when the term "computer" was a job title rather than an inanimate object. Teams of "computers" would fill out the table on paper using mechanical calculators, nobody was writing any computer code. In those days "programming" was primarily a math term, referring to solving a set of simultaneous equations. I suspect they're making the point because folks sometimes think that dynamic programming refers to some sort of self-modifying code.

  • 2
    Given the field that it's most associated with, it is a rather unfortunately named technique. Jan 10, 2012 at 21:48

Dynamic programming is a way to solve problems by decomposing them into sub-problems in a manner that the results of many of the sub-problems can be used many times throughout the solution. A table of the sub-problem results can be created, so that actual computations only need to be performed once per sub-problem.

Not the answer you're looking for? Browse other questions tagged or ask your own question.