This course provides an introduction to error control techniques, with emphasis on decoding algorithms. Topics include algebraic coding theory: finite fields, linear codes, cyclic codes, BCH codes and decoding, Reed-Solomon codes; iterative decoding: codes defined on graphs, the sum-product algorithm, low-density parity-check codes, turbo codes.