Practical Error Correction Design for Engineers