The Mathematics of Coding Theory: Information, Compression, Error Correction, and Finite Fields