There are four types of coding:
1. Data compression – This type of coding is used to reduce the size of data files so that they can be more easily stored and transferred. Common compression algorithms include ZIP, RAR, and GZip.
2. Encryption – This type of coding is used to protect information from being accessed by unauthorized individuals. Encryption algorithms use mathematical functions to transform readable data into an unreadable format. A key is required to decrypt the data back into its original form.
3. Error correction – This type of coding is used to detect and correct errors that occur during digital communication or storage. Error correction codes add redundancy to data so that errors can be detected and corrected when they occur.
4. Source code – This type of coding contains the instructions that a computer follows to perform a specific task or function. Source code is written in a programming language such as C++, Java, or Python.
Error control (or channel coding)

Error control is a technique used for detecting and correcting errors in digital data. It is used in many communication systems, such as telephony, Ethernet, and WiFi.
There are two main types of error control: error detection and error correction. Error detection adds redundant information to the data so that errors can be detected. Error correction uses more sophisticated techniques to correct the errors.
Error detection is usually accomplished by adding a checksum to the data. The checksum is a value that is computed from the data itself. If the data changes, so does the checksum. When the receiver receives the data, it re computes the checksum and compares it to the one that was sent. If they match, then there were no errors; if they don’t match, then an error occurred somewhere in transit.
Error correction is more complex than error detection because it has to be able to detect and correct multiple errors in a single block of data. One common technique for error correction is called forward error correction (FEC). FEC adds redundant information to each block of data so that if one or more bits are corrupted in transit, the receiver can still reconstruct the original message correctly using this extra information. FEC can be very effective at correcting multiple bit errors but it comes at a cost: The extra overhead reduces overall throughput because there’s less room for actual userdata in each block of transmitted information.
Line coding
Unipolar codes represent all information with a single signal level. In this type of code, there are only two voltage levels used: positive and zero . A unipolar code is sometimes also referred to as a NRZ (non-return-to-zero) code. One advantage of using a unipolar code is that it does not require a separate clock signal in order to recover the data at the receiver end. However, one disadvantage is that this type of line code is susceptible to bit stuffing errors (false bits being inserted into the stream of data).
Polar codes represent information using two signal levels that are opposite in polarity (i.e., +1 and -1). Like unipolar codes, polar codes do not require a separate clock signal in order for data recovery at the receiver end. However, polar codes are also susceptible to bit stuffing errors. In addition, because there are only two voltage levels used in this type of line code, it has a lower bandwidth efficiency than other types of line codes such as Manchester or bipolar encoding schemes.
Manchester coding represents information using changes in voltage level between two predetermined values that correspond to specific bit patterns. This type of line code typically uses alternating voltages to indicate a logical 1 (+5V for example) and no change in voltage level to indicate a logical 0 (-5V for example). A key advantage of using Manchester coding is that it allows for easy synchronization at the receiver end since each transition from one voltage level to another corresponds with either the beginning or ending edge of a clock cycle period. As such, this type OF coding scheme eliminates the need for sending a separate clock signal along with the data stream (which would take up additional bandwidth). One potential disadvantage associated with Manchester coding is that it can result in increased power consumption since there are more transitions between different voltage levels compared with other types Ofline codes such as NRZ or Polar encoding schemes..
“Coding is like a second language to me. It’s a way of thinking, and problem-solving that comes naturally to me.”