Ray tracing was my introduction to CS-like &quot;real&quot; programming, i.e. not just typing stuff in[1], but actually sitting down and thinking about the <i>math</i> of the problem[2]. I remember being super-excited (at 14-or-so yrs old) at being able to have my Turbo Pascal program draw a 640x480 grayscale(!) plane+sphere image on my monochrome VGA screen... which was the style at the time; the VGA card having been bought by me via pocket money and the screen having been bought by my parents. (Which is just another way of saying they bought both.)<p>Ray Tracing offers a <i>remarkably</i> big payoff for very little code. It <i>does</i> require a little algebra for line+(plane&#x2F;sphere) intersections and such, but that&#x27;s stuff you can easily look up these days.<p>[1] Yeah, I&#x27;m old. We had &quot;codes&quot; (typically heavily compressed&#x2F;obfuscated) in these things called computer &quot;magazines&quot; that you would type in and see what happened.<p>[2] There&#x27;s <i>always</i> math. Even if you&#x27;re doing CRUD, there&#x27;s probably math behind it: Form validation is a certain type of math, etc.