Single-Course English 5 ECTS

Advanced forward error correction and iterative decoding

Overall Course Objectives

To introduce students to advanced forward error correction (FEC) codes such as low-density parity check (LDPC) codes and convolutional turbo codes.
To introduce signal processing techniques for their decoding and error correction as applied in communication standards, such as 4G, 5G, deep space and satellite communications.
To relate nonlinear signal processing theory to the theory and application of FEC.

Learning Objectives

  • explain the theory of convolutional codes and their relation to block codes.
  • explain the principle of convolutional turbo codes.
  • explain the principle of LDPC codes.
  • explain the relation between decoding of turbo and LDPC codes and the belief propagation algorithm.
  • implement in Matlab, Python, C++, C (or similar) an advanced iterative decoder for a turbo or an LDPC code.
  • simulate the performance of a typical LDPC or turbo coded system as per a telecommunication standard.
  • extract relevant information from telecommunication standards employing convolutional, turbo and LDPC codes.
  • Design a decoder configuration for these codes depending on system requirements for performance and complexity.

Course Content

– Standard convolutional codes of rate 1/n: notation, theory, puncturing-based rate control
and relation to block codes.
– The BCJR algorithm for decoding of convolutional codes.
– Turbo codes with convolutional constituent codes.
– Turbo codes in telecommunication standards: deep space communications and 4G
LDPC codes: notation and theory.
– LDPC codes in telecommunication standards: DVB-S2 television standard and 5G.
– Hamming codes as LDPC codes.
– Decoding algorithms for LDPC codes: the sum-product algorithm.
– Belief propagation algorithm and its relation to the sum-product and BCJR algorithms.
– Simulation of basic FEC in the presence of Gaussian noise.

The course is composed of lectures around the topics of interest with simple exercises following each lecture. The course concludes with a project on either an LDPC or a turbo code decoder, as implemented in a respective standard.

Recommended prerequisites

01405/30300/34230/02405, Good experience in MATLAB is required. C/C++ may be alternatives, but MATLAB is used in examples

Teaching Method

Lectures, exercises, and project work



It is assumed that the students bring their own laptop computer and have access to programming in MATLAB, Python or C/C++.

See course in the course database.





3 weeks




DTU Lyngby Campus

Course code 34251
Course type Candidate
Semester start Week 1
Semester end Week 35
Days Mon-fri 8:00-17:00

7.500,00 DKK