Channel coding has become an essential part in communication and storage systems. Block and convolutional codes are used in all digital standards. The aim of channel coding is to protect the information against disturbances during transmission or write/read. Thereby redundancy is added for error correction and for error detection. This course is about the basic methods in channel coding and gives an introduction to the more advanced methods of coded modulation.

The course is intended for Master students in electrical engineering with major in communication engineering. In addition it may be suited for students in computer science and mathematics.

Linear block-codes

  • Generator and parity-check matrix
  • Cosets
  • Principles of decoding
  • Hamming codes
  • Bounds for code parameters (Hamming-, Singleton-, Gilbert-Varshamov-Bounds)
  • Trellis representation of block-codes
  • Plotkin construction, Reed-Muller (RM) codes (relationship to binary PN- and Walsh-Hadamard sequences)
  • APP and ML decoding (sequence and symbol based)

Algebraic coding

  • Prime fields, primitive elements, component- and exponent representation
  • Reed-Solomon (RS) codes as cyclic codes with generator- and check-polynomials
  • Algebraic error and erasure correction with the Euclidean algorithm
  • BCH codes (as subfield subcodes of RS codes)
  • The perfect Golay-code as non-primitive BCH-code
  • Decoding of algebraic codes (key equation, Euclidean- and Berlekamp-Massey algorithm)

Convolutional codes

  • Algebraic properties
  • State Diagram
  • Trellis representation
  • Error correction capabilities of convolutional codes
  • Viterbi- and BCJR algorithm (flow in graphs)

Further coding and decoding techniques

  • LDPC codes
  • Permutations-, Majority- and Information-Set decoding
  • Dorsch algorithm (ordered statistics decoding)
  • Parallel (Turbo)- and serial concatenated codes and their iterative decoding

Introduction to generalized code concatenation and coded modulation