MATH3411 - Information, Codes and Ciphers

3 minute read medium

Difficulty: 7/10 · Time Commitment: 6/10 · Enjoyability: 10/10 · Mark: 87


I did MATH3411 (Information, Codes and Ciphers) in Term 3 2021. The subject is an introductory subject on code correction, data compression and encryption. Although it is a Level 3 subject, it provides a very high level mathematical understanding of each topic and this makes it very enjoyable and suitable for everyone! This was the best course I have taken in any subject ever and the lecturer, Dr Britz, provided a huge amount of course support and explained each concept in a fascinating and easy-to-understand manner.


  • Extremely fun course with lots of real-life examples
  • Best lecturer ever (Dr Britz) who puts lots of time and effort into making the course fun
  • A great introduction to the mathematical side of data compression and encryption


  • A bit of a learning curve for 1st year students (the course is quite a bit harder than 1st year maths courses)
  • The 3 lab tests and final exam make the course stressful during busier periods of uni



MATH3411 is split into 7 chapters spanning error detecting/correcting codes, data compression, information theory and cryptography. There are 3 lab tests scattered throughout the term after each major topic. I found the first 3 weeks of the course to be significantly harder than anything afterwards. The final exam has a similar structure to each lab test, however, covers every topic briefly.

Every exam has almost the same format so it is very easy to spend a few days studying for those particular questions and avoiding the topics that aren’t prevalent in past papers. Similarly, lab tests have a practice version which uses the same question bank as the actual lab test. I attempted each lab test 15-20 times before completing the actual lab test to make sure I was completely confident with each style of question.

Lectures and Tutorials

COMP3411 has 2 hour lectures twice a week and an hour tutorial. There is always a lot to cover and there are plenty of tutorial questions to consolidate lecture content. This is very beneficial, however, it means that most tutorials go quite overtime (sometimes by 30 mins to an hour).

There is a lot of really interesting stuff covered in this course. Some of these include:

  • Hamming Codes and Linear Codes
    • How they detect and correct errors
    • How many errors can be detected/corrected
  • Other error detecting/correcting codes
    • ISBN 10
    • Parity check bits for block codes
  • Huffman Codes and Shannon-Fano codes
    • Different types of data compression
    • Algorithms to find codes for each one
    • Extensions (encoding multiple symbols with one codeword)
    • Huffman coding for Markov sources
  • Information Theory
    • Fermat’s Little Theorem
    • Division Algorithm for finite fields
    • Finite Field Theorem
  • Cryptography
    • Vigenère Ciphers
    • Kasiski’s Method
    • Public Key Cryptography
      • RSA
      • Discrete Logarithm Problem


  1. Do the practice lab tests several times before the actual one. Both the practice lab tests and the actual ones both use the exact same questionbank, however, there are several variations of each question in the questionbank itself. Because the lab tests are randomly generated, it sometimes takes 10+ attempts to generate every different version of each question.
  2. Write very concise notes. The slides used in this course are already really detailed and contain everything relevant to the course. The best way I found to take notes was to focus on the important formulae and proofs, and rely on a downloaded copy of the slides for everything else.
  3. Use the forum!! This is the one course this year where I found the forum just as useful as the lectures and tutorials themselves. The forum this term was extremely responsive and whenever I was confused about a question, I was sure that someone would be able to help on the forum within an hour.