Decoding Algorithms