DNA molecules are so small that it might be practical to use their frequency vectors to encode messages. More precisely, a sender can inject M_X copies of the string X = CATCATCAT into a pool and the receiver can recover M_X by sequencing the pool. There are, however, two sources of uncertainty: (a) M_X is usually too big to be counted exactly, but is estimated by sampling. (b) The DNA sequencer could be noisy; it may have difficulty distinguishing CATCATCAT from CATGATCAT. Recently, Tamir, Weinberger, and Guillén i Fàbregas clarified the amount of information the frequency vector can carry under (a). They showed that each string can carry about log_4 R bits, where R is the average number of times each string is read. They also showed that log_4 R bits can be achieved by a low-complexity uncoded scheme under the condition that there are at least √(R) distinct strings. In this paper, we show that a low-complexity coded scheme can achieve the same log_4 R bits unconditionally. We then generalize the scheme to handle sequencing noise, (b), and show that the noise penalizes the total number of bits by log_2 W, together with a linear term due to the use of Fourier transforms in our proof. The former penalty log_2 W is asymptotically the same as that obtained by Gerzon, Shomorony, and Weinberger; our scheme trades a small amount of rate for practical complexity.