Taken in AY20/21 Sem 2 under Prof Ma Siu Lun. All classes were conducted online due to the pandemic.
This module is split into two parts — cryptography and coding theory. Cryptography is about encoding messages in a way where it is difficult for third parties to decipher, while coding theory is about sending messages over noisy channels using as few bits as possible.
The first half of the semester is on cryptography. It starts off by covering various types of ciphers, frequency analysis (for attacking ciphers), substitution-permutation networks, linear cryptanalysis (for attacking substitution-permutation networks), and Feistel ciphers. Public-key cryptography then follows, covering RSA, various factorisation algorithms, ElGamal, various discrete logarithm algorithms, and elliptic curves. Hash functions are also covered. The cryptography section of this module has large breadth but little depth — Prof Ma talks about each topic in a rather descriptive fashion, with little in-depth analysis.
The second half of the semester is on coding theory. It starts off with maximum likelihood decoding, Shannon’s channel coding theorem, and minimum distance decoding. This is followed by linear codes, parity-check matrices, and syndrome decoding. Some bounds on the (space-)efficiency of codes are also covered. Finally, cyclic codes, generator polynomials, and some types of special cyclic codes are covered.
There is significant overlap with MA3218 Applied Algebra, and I would recommend taking these two modules in succession if possible.
The homework assignments, midterms, and final exam contain mainly computation and simple proof questions, though there are a few slightly more difficult proof questions in the final exam. This is probably one of the easier level 4 mathematics modules.
Like most other mathematics modules, there is no group work in this module. Neither are there graded components during lectures or tutorials. Prof Ma goes through the tutorial questions during tutorial sessions — no student participation is required or expected.
Overall, I found coding theory to be more interesting than cryptography, perhaps because the mostly descriptive cryptography topics could get quite dry at times. Prof Ma is helpful and approachable if you ask him to clarify things in the lecture, but the lecture may get somewhat monotonous at times.