information theory, coding and cryptography