||Error control codes are an integral part of most communication and recording systems where they are primarily used to provide resiliency to noise. In this course, we will cover the basics of error control coding for reliable digital transmission and storage. We will discuss the major classes of codes that are important in practice, including Reed Muller codes, cyclic codes, Reed Solomon codes, convolutional codes, concatenated codes, turbo codes, and low density parity check codes. The relevant background material from finite field and polynomial algebra will be developed as part of the course. Overview of topics: binary linear block codes; Reed Muller codes; Galois fields; linear block codes over a finite field; cyclic codes; BCH and Reed Solomon codes; convolutional codes and trellis based decoding, message passing decoding algorithms; trellis based soft decision decoding of block codes; turbo codes; low density parity check codes.