It has recently been shown that DNA can serve as a medium to solve computationally complex problems. So far two kinds of DNA computation have been proposed. One, called in vitro computation, requires synthesising particular sequences of DNA (according to the problem) and letting them react in ?a test tube?, while the other, an in vivo approach, makes use of the properties of living cells and organisms to solve computational problems at the DNA level. This paper describes the principles of DNA based computation and shows some examples of in vitro and in vivo computational approaches. In addition, contrasting views about the usefulness of molecular computation are presented.