This document discusses convolutional codes. It defines basic concepts like constraint length and generator polynomials that define convolutional codes. It describes representations of convolutional codes using state diagrams and trellis diagrams. It also discusses decoding convolutional codes using the Viterbi algorithm, which finds the most likely path through the trellis. The document concludes by discussing properties of convolutional codes like free distance, which is the minimum Hamming distance between codewords.