Error-Correcting Codes and Finite Fields