# Cipher programming training * [Aims](aims.html) * Caesar ciphers: [Making](caesar-encipher.html) and [Breaking](caesar-break.html) *(Changing representations, language models, text encodings)* * Affine ciphers: [Making](affine-encipher.html) and [Breaking](affine-break.html) *(Time/space trade-offs, off-by-one issues)* * [Word segmentation](word-segmentation.html) *(Memoisation and complexity)* * Keyword ciphers: [Making](keyword-encipher.html) and [Breaking](keyword-break.html) *(Being Pythonic and parallelism)* * Transposition ciphers: [Making](transposition-encipher.html) and [Breaking](transposition-break.html) *(Equivalence classes)* * Pocket enigma: [Making](pocket-enigma-encipher.html) and [Breaking](pocket-enigma-break.html) *(Object orientation)* * [Alternative plaintext scoring](alternative-plaintext-scoring.html) *(Empirical computing through simulation)* * [Further work](further-work.html)