Error Control Coding: From Theory to Practice