DNA also has 'error correcting' codes1. The genetic code2 is made up of triplets, each of which codes for a particular amino acid - essentially three 'letters' in the DNA alphabet for every 'letter' in the protein alphabet.

The redundancy lies in the fact that there are only 20 letters for proteins while DNA has four - and triplets of four make 4 X 4 X 4 = 64 possible codes. This means that several particular triplets (called codons) can code for a particular amino acid. Also, a few codons represent the control codes start and stop. As an analogy to communication, DNA is the 'message' that is sent from one generation to the next. This message must include redundancy to supress errors (mutation) - even though mutation can occasionally be useful.

However, there are further levels of redundancy at the level of the chemical language of proteins. Often, one letter can substitute for another, as the set of amino acids can be divided into subsets with similar chemical properties. In addition, DNA is redundant by virtue of its structure - the double helix provides a 'reversed' copy of the information in the antisense strand.

It is this redundancy that not only mitigates some of the effects of mutation, but also provides some of the raw material for diversity in a population. Although two organisms may be producing the same protein, and therefore have the same phenotype the underlying gene may not be the same. It is this 'silent' genetic diversity (neutral drift) that can potentially allow a population to respond to a diverse set of environmental changes.

1 Of course, most genomes are truly error-correcting in that they code for proteins that repair damage and mutations! :)
2 Biology has probably borrowed some of the terminology of codes from electrical engineering and/or information theory, but the meanings may be slightly different.