Theory And Practice Of Error Control Codes