Get started: Here are some possible first steps:
Get a free account on Codecademy and start the course on Python 3. This starts with the very basics on programming with Python.I have been informed that one cannot complete the course for free without starting a free trial.- Watch some video tutorials on Python, which is accompanied by a written guide with hyperlinks and exercises written by the same author.
- Get a free account on CoCalc and let me know so I add you to our project. Cocalc is a place where you can program in Python or Sage without installing anything on your laptop.
- If you prefer you can install SageMath on your computer by following these instructions to install SageMath. Note that this is kind of complicated on Windows machines.
Ideas of programs to work on:
- Learn about and implement fast modular exponentiation. You will need to know about control flow, lists, and loops from the Codecademy course.
- Implement Elgamal key generation, encryption, and decryption. Find someone else in the class who has also done and exchange secret messages.
- Implement baby steps, giant steps. You can do this either for the units modulo p, or for a general group.
- Implement the key generation, encryption, and decryption for our simple lattice-based cipher from Tuesday July 26.
Project ideas:
- Implement and compare different factoring algorithms. The book by Hoffstein, Pipher, and Silverman presents some factoring algorithms (available at the PCMI library). It would be fun to implement them and compare their performance at factoring some of the moduli of the RSA factoring challenge. When I taught factoring algorithms I wrote these two problem sets for my students, which you might find helpful to get started: