In this document I explore the mathematical peculiarities of modular arithmetic and Elliptic Curves, and then move on to their representation with the programming language Python.

Elliptic Curves are a class of mathematical curves with a very peculiar property: any non-vertical line that intersects an Elliptic Curve in one point, also has two other intersection points with the same curve (tangency points count "double"). This means that by knowing two points of intersection of a line with an Elliptic Curve, we can calculate the third - a kind of "sum" operation.

This property, in combination with modular arithmetic, makes Elliptic Curves interesting for some applications, like the factorization of large numbers or primality tests. They are commonly used in cryptography.

After getting to grips with the mathemetics behind them, I move on to representing Elliptic Curves as Python classes. I am confronted with a wide range of challenges, from the imprecision of floating-point numbers in computers to algorithms for optimizing calculations with very large numbers.

In 2014-15, I presented this document as my Matura Project (final evaluation 5.5/6).

The full PDF file can be downloaded here (italian language).