Ray tracing was my introduction to CS-like "real" 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/sphere) intersections and such, but that's stuff you can easily look up these days.<p>[1] Yeah, I'm old. We had "codes" (typically heavily compressed/obfuscated) in these things called computer "magazines" that you would type in and see what happened.<p>[2] There's <i>always</i> math. Even if you're doing CRUD, there's probably math behind it: Form validation is a certain type of math, etc.