I'll take you through writing a ray tracer in the order I do it, along with some debugging tips. By the end, you will have a ray tracer that produces some great images.
You should be able to do this in a weekend. If you take longer, don't worry about it.
I use C++ as the driving language, but you don't need to. However, I suggest you do, because it's fast, portable, and most production movie and video game renderers are written in C++.
Note that I avoid most "modern features" of C++, but inheritance and operator overloading are too useful for ray tracers to pass on.
Is math related to science?
The following metrics were computed from 40 interview experiences for the Google Software Engineer role in Singapore.
Google's interview process for their Software Engineer roles in Singapore is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Google's Software Engineer interview process in Singapore.