Skip to content

Releases: kaince/cryptography

JuPyter Notebooks for a First-Year College Cryptography Course

25 Apr 19:53
Compare
Choose a tag to compare

JuPyter notebooks for a unit or course in cryptography without prerequisites from a number-theoretic perspective, originally developed for the publication Cross-Curricular Pure Math Applications in the section "Modular Arithmetic through Secret Codes".

You may upload the .zip file directly to CoCalc and assign to your students that way (preferred if your students don't have prior experience with SageMath), or have your students install a distribution such as Anaconda or Miniconda and directly send them the files.

The order in which the modules build on themselves is as follows. There is some flexibility (for example, whether and when you assign the Euclidean Algorithm and Frequency Analysis modules), but for the most part I strongly recommend following the ordering below when introducing basic ciphers.

  1. ShiftEncrypt: Encrypting Shift Ciphers
  2. ShiftDecrypt: Decrypting Shift Ciphers with Known Key
  3. BruteShift: Brute-Force Cryptanalysis of Shift Ciphers
  4. AffineEncrypt: Encrypting Affine Ciphers
  5. Frequency Analysis
  6. Euclidean Algorithm
  7. VigenereEncrypt: Encrypting Vigenère Ciphers

The rubrics I use to grade these modules are available upon request.