I developed a Diffie Hellman exchange as an academic project over an elliptic curve.
The biggest roadblock was understanding the elliptic curve and operations in it well enough to be able to code a field over it and be able to generate a shared secret. I ended up needing to debug for days to get it to work, and learnt a lot about elliptic curves in the process.