This document describes convolutional codes for channel coding in communication systems. Convolutional codes are represented by parameters like constraint length K, where K is the number of shift registers used. The convolutional encoder operates like a finite state machine, with the state defined by the most recent K-1 message bits. The trellis diagram provides an explicit representation of the convolutional encoder as a finite state machine. Convolutional codes are decoded using the Viterbi algorithm, which performs maximum likelihood decoding by selecting the most probable path through the trellis. Simulation results show the performance of the convolutional encoding and decoding system.