## Coding Theory - About the course

Please make sure that you have read the official course description. Here is some information that complements it. Below are the Intended Learning Objectives of the course. The home page of the course is here.

### What is it all about?

Coding theory is not about writing computer code, and is not about cryptography. The purpose of coding theory is to generate mathematical ideas and methods that can be used to transmit information more reliably. The main concept of coding theory is error correcting code.

### Why does one need error correction?

When information (message) is passed from a sender to a receiver, there is a chance that some parts of that message are changed or lost. This is often due to random noise - think of atmospheric noise interfering with radio transmision, gamma-ray bursts affecting satellite feed, crosstalk in Ethernet cables, scratches on a DVD, etc. One would like to recover the original message after it has been affected by noise.

### How can one possibly correct errors in the transmitted messages?

One wants to design messages in such a way that they are "far" from each other. Then, if a message is changed slightly, it still does not coincide with any other message, and can be recovered.

The precise meaning of "far" can be formalised in terms of Hamming distance, but here is an easy example.

Suppose that we want to transmit one of the two messages: 0 (No) or 1 (Yes). If we send just one bit, 0 or 1, it can arrive corrupted so that No changes to Yes and vice versa - there is no way to know that an error occurred. We will transmit the codeword 00000 for No and the codeword 11111 for Yes. That way, because it is much less likely that more than two bits will change in a transmitted codeword due to noise, the received word 01000 can be fairly safely interpreted to mean No.

We have just seen an example of an error correcting code called repetition code, which is quite inefficient: we had to send five bits instead of one. In the course, we will see how to design much more efficient codes.

### What mathematical ideas are used to design codes?

We will use algebra and, to some extent, geometry and logic to do this, and will have to work with vectors, matrices and projective spaces over finite fields, polynomials and the Boolean algebra. We will prove general facts about codes. We will also see some codes which were used by NASA to transmit messages to the deep space missions, and codes used in modern telecommunication networks, alongside more peculiar historical applications of codes in sports betting.

It should be noted that, while the above serves as a background or motivation to the study of codes, all the examinable material in this course is purely mathematical. Students' knowledge of electrical engineering or sports will not be assessed.

## Intended Learning Objectives

On successful completion of the Coding Theory course, students should be able to:
• state and prove fundamental theorems about error-correcting codes given in the course;
• calculate the parameters of given codes and their dual codes using standard matrix and polynomial operations;
• encode and decode information by applying algorithms associated with well-known codes;
• compare the error-detecting/correcting facilities of given codes for a given binary symmetric channel;
• design simple linear or cyclic codes with required properties;
• solve mathematical problems involving error-correcting codes by linking them to concepts from elementary number theory, combinatorics, linear algebra and elementary calculus.