/coding

(hopefully) elegant python source code for the course "Codetheorie" @UAntwerpen (without old crypto)

Primary LanguagePython

Coding Theory, in Python

Content

This is a Python implementation of (parts of) the "Codetheorie" course at UAntwerpen, given by Stijn Symens.

Since there is also a project throughout the year concerning the "old" crypto part (Vigenère, Enigma, ...) of the course, this project will not try to implement that (chapters 1 and 2). Instead it focuses on the other chapters:

  1. Finite fields: done
  2. (Introduction etc: skipped)
  3. (Enigma: skipped)
  4. Discrete logarithm: partly done
  5. RSA: TODO
  6. Rijndael: TODO
  7. Error correcting codes: TODO
  8. Linear codes: TODO
  9. Perfect codes: TODO
  10. Cyclic codes: TODO
  11. BCH codes: TODO
  12. Reed-Solomon codes: TODO

The implementation focusses on elegance, and performance is of almost no concern. The code itself is of great value here, and not just the functionality it provides.

Notebooks

To use and experiment with the code, I use Jupyter. However, I don't want output in the git, so I use nbstripout to strip that away. You may have to install it when committing (pip install nbstripout), as it is set up as a git filter. If you'd rather not install Jupyter, Github has excellent support for viewing Jupyter notebooks. You can copy paste the parts you want into a normal Python terminal.

Support

There is only one version, the latest version. I make full use of the glorious f-strings, so Python 3.6 or newer is required. Required libraries are listed in requirements.txt.