Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch!
Ok, that's overselling it. But, it's a pseudo-code and Cucumber filled book on making a language agnostic ray tracer. I've just finished the book and it started a breeze and ended a right challenge. However, I can't argue with the result.
I made the ubiquitous teapot. And I'm proud of the result. The BDD/ TDD based Cucumber approach was magic, so much so that after doing it once in my main language (PHP) I'm going to see how good it is at teaching me a new language (RUST).
The book is hand-holding almost all the way through, with the end getting right tricky and pointy. Almost everything has a cucumber test case along side it, which is great for being able to verify results without needing in depth calculations to figure out if you're right. Of course, when things are not right, it's that much harder to figure out where things went wrong. As the algorithms are described in passing, but with links to the full deal.
I would've liked more test cases, maybe Scenarios for almost each test rather than a single one. There were a few instances that I had to get deep into my debugging skills to figure out where errors were introduced. Not sure how you could support that unless you had a couple of major test cases that checked the calculation at each step to find where things went pear shaped.
This book is great for coders of any skill level. Introducing the reader to BDD via this method is also brilliant; I've loved cucumber for a while so seeing it used in this manner is a delight. A very respected co-coder at work is using the book to learn Go, and is recoding the cucumber into Go-Unit tests; but it's still BDD and still fantastic.