This course is typically meant for an Masters-level or final-year BE student. Error-correcting codes are in widespread use for data storage as well as most forms of communication where reliability is of importance. Examples range from compact discs to deep-space communication. This course will cover both classical error-correcting codes such as BCH, Reed-Solomon and convolutional codes as well as the more modern class of iteratively decodable codes, low-density, parity-check codes in particular.
Course overview; Basics of binary block codes for the binary symmetric channel; Mathematical preliminaries: groups, subgroups and cosets.
Linear block codes; Bounds on the size of a block code; Bounded and maximum-likelihood decoding of binary block codes; standard array decoding.
Basics of convolutional codes; the Viterbi decoding algorithm.
The generalized distributive law (GDL).
The GDL perspective on the Viterbi and BCJR decoding algorithms; Turbo codes in brief.
Fields; Polynomials rings; construction of finite fields.
Deducing the structure of a finite field; Subfields and cyclotomic cosets.
The finite field (Fourier) transform; cyclic codes via finite field transforms.
BCH and Reed-Solomon codes; decoding of BCH and RS codes.