DNA computing as a field started in 1994 when Leonard Adleman solved a hard computational problem entirely by manipulations
of DNA molecules in a test tube [1]. The premise behind DNA computing is that DNA is capable of storing information, while various laboratory techniques that
operate on and modify DNA strands (called bio-operations in the sequel) can be used to perform computational steps. Most DNA
computations consists of three basic stages. The first is encoding the problem using single-stranded or double-stranded DNA.
Then the actual computation is performed by employing a succession of bio-operations [14]. Finally, the DNA strands representing the solution to the problem are detected and decoded. Because of the nature of the
substrate in which the data is encoded, namely DNA strands, problems can occur at the encoding stage which would not occur
in an electronic medium. In order to describe these problems and our attempts at solutions, we now briefly present some basic
molecular biology notions and notations.
Research partially supported by Grants R0504A01 and R2824A01 of the Natural Sciences and Engineering Research Council of Canada.