This document discusses cyclic codes, which are a type of error correcting code used in digital communications. Cyclic codes have the property that any cyclic shift of a codeword is also a valid codeword. They are defined by a generator polynomial that is a factor of x^n + 1, where n is the codeword length. Cyclic codes allow for simple encoding and decoding circuits using shift registers. Examples of cyclic codes include repetition codes, Hamming codes, BCH codes, and Reed-Solomon codes.