A Course In Error-Correcting Codes