Some definitions you need to know

A lot of technical terms will be present in this project, so for purpose of simplicity, the section below is appropriated to give an idea about some definitions and technical terms.

Error detection: Is the detection for errors occurred due to noise and impairments in the transmission from the transmitter to the receiver

Cyclic redundancy check (CRC): it is an error-detecting code used to detect changes on data transmitted, by adding a check value (redundancy) on the system input. On retrieval, after doing the same calculation as in input, if check values do not match that means an error occurs.

Parity bits: it is a bit added to the source bits in order to obtain an even or odd number of set bits (with value 1) in the outcome.

Redundancy: In order to correct a message, some additional bits are added to the data transmitted which will be used by the receiver to check consistency of the delivered message and then recover the erroneous data.

Error correction: Is the reconstruction of the data after detecting errors in the receiver side.

Forward error correction (FEC) or channel coding: it is a technique during which additional information (redundant bits) are encoded to the message by the sender using error-correction code (ECC). This redundancy allows the receiver to detect a limited number of errors, and then recovers the original data without relying on retransmissions of data. It is used in applications such as mobile communication

Systematic code scheme: In this scheme, parity data (check bits) derived from an algorithm are attached to the original message. The same algorithm is implemented on the receiver. Once the data is received, the algorithm will be applied, and by comparing the output with the received check bits, the receiver detects error if the results do not match (Golay code is a systematic code).