Skip to main content

Unit information: Coding Theory (M) in 2022/23

Please note: It is possible that the information shown for future academic years may change due to developments in the relevant academic field. Optional unit availability varies depending on both staffing, student choice and timetabling constraints.

Unit name Coding Theory (M)
Unit code EENGM2010
Credit points 10
Level of study M/7
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Professor. Piechocki
Open unit status Not open
Units you must take before you take this one (pre-requisite units)


Units you must take alongside this one (co-requisite units)


Units you may not take alongside this one
School/department Department of Electrical & Electronic Engineering
Faculty Faculty of Engineering

Unit Information

Coding theory tackles the theory and design of error correction codes. Error correction codes are a common component within many communications and data storage systems, to ensure that information is accurately reproduced in the presence of transmission errors. The codes rely on the addition of additional redundant parity data in order to facilitate the detection and correction of transmission errors.

The subject stems from pioneering work by Claude Shannon in 1948 who showed that it is theoretically possible to accurately transmit data at any rate below the channel capacity. Since then much effort has been invested in the development of good codes and efficient decoding methods for reliable communication. Many of the commonly used techniques rely on the use of the structure associated with finite algebra.

This module will cover a variety of commonly used coding techniques including linear block codes, cyclic codes and convolutional codes. The performance of codes will be examined, both for random errors, burst errors and time varying or fading channels. The module will also cover other practically useful techniques, including interleaving, Reed Solomon codes, product codes, concatenated codes, turbo codes and other iteratively decoded codes.


  • Introduction to Coding Theory - Shannon’s noisy coding theorem, channel types, code rate , coding gain;
  • Block codes - encoding and decoding, Hamming distance;
  • Finite algebra; - finite fields, vector spaces;
  • Linear block codes - generator and parity check matrices, systematic codes, standard array, performance bounds, Hamming codes, modified codes, calculation of error rates;
  • Cyclic codes - generator polynomials, syndrome calculation, modified codes, low rate codes, CRCs, Reed Solomon codes;
  • Convolutional codes - encoding, state & trellis diagrams, Viterbi decoding, performance, puncturing for code adaptation;
  • Practical exercise – implementing and simulating linear block codes in Matlab, comparing theoretical performance for block codes.

Your learning on this unit

On completion of this unit the student will be able to:

  1. Outline the problems and techniques used for error correction coding.
  2. Apply the theory behind many of the codes, taking into account the importance of linearity, and the use of finite algebra.
  3. Explain in detail linear block codes including encoding and decoding techniques, coding bounds, theoretical performance and coding gain.
  4. Explain in detail cyclic codes including encoding and decoding techniques.
  5. Outline non-binary codes including Reed Solomon codes.
  6. Explain in detail both non-recursive and recursive convolutional codes including encoding, Viterbi decoding and puncturing for adaptive performance.
  7. Describe compound codes including product codes and concatenated codes.
  8. Outline, at system level, iterative decoding techniques and their application to turbo codes, product codes, LDPC and turbo equalization.
  9. Implement and simulate codes using Matlab.

How you will learn

Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities supported by drop-in sessions, problem sheets and self-directed exercises.

How you will be assessed

Coursework (100%)


If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. EENGM2010).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the Faculty workload statement relating to this unit for more information.

The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. If you have self-certificated your absence from an assessment, you will normally be required to complete it the next time it runs (this is usually in the next assessment period).
The Board of Examiners will take into account any extenuating circumstances and operates within the Regulations and Code of Practice for Taught Programmes.