Optical design program

Hi I am a relatively new programmer and and tips would be greatly appreciated.

I’m working on developing an optical lens design program for a project while studying maths and physics at uni, that can trace rays through a set of lenses, evaluate the performance and apply a global optimisation algorithm. It would be great if I could implement a GUI and visualise the program and some of the results.

Is this a purely simulation-based project (i.e., no actual hardware like lenses or sensor)?

You might get better guidance if you state your learning objectives, and also how far you are in the project development.

You might want to check out some of prior art in Rust on this topic, such as: