The Secrets of Codes: Understanding the World of Hidden Messages