A Commonsense Approach to the Theory of Error-Correcting Codes (Computer Systems Series)