Error-Correction Coding and Decoding