MATH32032 Coding Theory - 2017/18, Semester 2

The course home page is being updated for 2017/18

About the course

Please make sure that you have read the official course description. Below is some information that complements it.

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.

Draft lecture notes

Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6 Chapter 7 Chapter 8

Feedback and assessment

Coursework - for credit: this will be worth 20% of the final mark for the module. Coursework will consist of two parts to maximise opportunities for feedback before the final exam. Exact weightings and due dates are currently under review.

Part I:
a take-home problem sheet
Part II:
online, Blackboard-based tests

Formative assessment - not for credit: mini-class tests, with individual feedback, will be offered to students as part of the tutorials. Students can also get feedback on their understanding directly from the lecturer, for example during the lecturer's office hour.

Feedback on old exam papers: here.

Other useful information

TIMETABLE: Monday 2pm lecture; Thursday 1pm lecture; Thursday 2pm examples and feedback class. Venue TBA.

EXAM: in May or June 2018 [80% of the final mark for the module].

ABOUT the course: here.

Dr Yuri Bazlov
yuri.bazlov, append AT and
2.220 Alan Turing building
office hours:
TBA. I intend to be available in my office during the office hours, but students may come to see me at other times as well, or make an appointment by email.