Grasshopper Data Tree Study Cards
The parametric modelling tool Grasshopper has an interesting internal data structure - a tree in which a node is only allowed to either store data items or have child nodes, but never both. In those data-carrying leaf nodes, Grasshopper always stores a single list of items, and these lists cannot be nested further. This works really well for the intended purpose - it makes it possible to represent things such as "this point came from the first surface of this object" and differentiate it from "that point on the second surface". David Rutten has written about this in The Why and How of Data Trees.
Wrapping your head around complex data structures is one of the hardest things about learning to program. It certainly took me a while to get what Grasshopper is doing here. I recently (vibe-)built a small web app (usable on the phone) that presents a set of cards with interactive exercises specifically teaching data trees and their transformations, which I hope some other learners will find useful.
The source code is on Github.