You are correct that DNA is redundant, non-overlapping and universal, however you don't actually refer to three bases on the DNA strand as a codon. Three bases on a DNA strand are called a triplet, while three bases on an mRNA strand (after RNA processing) are called a codon and of course, the three bases on a tRNA are called an anticodon.
You also have to understand that not all of the DNA bases actually code for any amino acids. Only exon regions of the DNA are maintained in transcription so DNA in the intron regions are not expressed in the phenotype. Interestingly enough this is why we can analyse STRs in the intron regions as mutations that accumulate in the introns are not under any selection pressures and hence are highly unique to individuals.
Just to clarify a little on introns.
Not all DNA that doesn't go on to translation is an intron. Only DNA which is transcribed and then removed in mRNA processing is considered an intron. There are actually vast sections of DNA (by far the majority) between genes that aren't considered introns. We call this DNA non-coding DNA because it doesn't get transcribed.
It's also worth noting as well that an intron in one cell may not be an intron in another. Biology textbooks on the new course do reference alternative splicing (although I'm not convinced this is necessary knowledge for your exams...I think it's overkill by the texts). So in some cases, an intron might be removed in processing, but in others it might not. In these latter cases, it's not an intron...it's an exon. [it does get a bit more complicated than this, but I think we're probably at our limit already].
In short, it's confusing! If you're worried about this area remember that introns are sequences that get
in the way and are thus removed in post-transcriptional modification.
I'm also interested to know why you think (@Jem_) that the genetic code is not quite universal?