Error Correction Codes (ECC) are forms of redundancy that are added to a stream of data in order that even errors occur during transmission, the original data can still be recognized at the receiver. Let us take for example, that we are to transmit the word "HELP", instead of just sending the word help, we can send a redundant code saying "HOTEL ECHO LIMA PAPA". The receiver and transmitter already agree that the letters be sent in NATO phonetic format. For example upon transmission errors occurred on the received data and it becomes "TOTEL ECHO SIMA LAPA".

The receiver can still recognize the data since in the NATO phonetics, only HOTEL ends in OTEL, only LIMA ends in IMA, and only PAPA ends in APA, then the original message can be recovered. ECC are actually a combination of error detection and correction capability.Forward Error Correction CodeOne popular ECC is the Forward Error Correction Code. In a Forward Error Code, “the receiver never sends any messages back to the transmitter but the receiver decodes what it receives into the most likely data” (Wikipedia, 2007). One method of Forward Error Correction Code adds Hamming bits to a series of bits in such a way that when an error occurs, the new Hamming bits, when compared to the old Hamming bits, points to the error.

Let us take a 4bit binary data of D3 D2 D1 D0. Let us take for example 1011.The Hamming bits consist of a 3bit binary data H2 H1 and H0. To generate the Hamming bits, we think of the Hamming bits as a binary number that points to the position of each bit.

So D3, which is position 4 from D0, should be exclusive ORed (Å) with other bits that affects H2 (position 4=100binary) which in this case only D3=1. D2 should be exclusive ORed (Å) with bits affecting H1 and H0 (position 3 = 011 binary) which is D0 and so on. The overall process is shown below for the binary data 1011.1011H2=D3=1H1=D2ÅD1=1H0= D2ÅD0=1The bits transmitted consist of the data 1011 and the hamming bits 111. Upon transmission let us say D1 had an error and the resulting data becomes 1001 111. Then we generate again the new Hamming codeH2=D3=1H1=D2ÅD1=0H0= D2ÅD0=1Then we compare the received Hamming code with the generated code as shown belowOld                 111New               101Result         010 which when converted to position value becomes 2.

This means D1 is in error, and thus we correct D1 from 0 to 1 and recovers the correct data as 1011.Other DetailsError Correction Codes is allotting more of the bandwidth to the reliability but on the other hand it reduces the efficiency of the transmission. This is because you needed more bits to transmit a series of bits consisting of pure data. Error Correction Codes can only correct errors (e) equal to ½ (d-1) where d is the Hamming distance. “The Hamming distance between two code words x and y is the number of coordinate positions in which they differ” (UC Berkeley School of Information, 2000). This means that ECC have limits and their application depends on the expected errors.

For example the above shown forward error correction code is effective in correcting single bit random errors. The type of ECC needed depends on the anticipated errors in the transmission media.