Principles and techniques for combating channel errors in data transmission or storage. Introduction to galois fields. Linear blockcodes (particularly hamming, BCH, reed-solomon). Convolutional codes. Encoding and decoding algorithms (including spectral methods, maximum likelihood and viterbi decoding.)