1. A method of decoding an encoded sequence of data symbols, comprising the steps of: computing branch metrics for each state for each trellis stage of the encoded data sequence; computing path metrics for each state for each trellis stage using the computed branch metrics of a present trellis stage and the path metrics of a previous trellis stage; and performing an M-at-a-time traceback operation using the computed path metrics to generate M decoded data symbols in a single M-at-a-time traceback operation, wherein M ranges from 1 to N, N being a length of the encoded sequence of data symbols; wherein each of the steps is repeated to obtain the decoded sequence of data symbols.