Alligator Eggs
worrydream.com
worrydream.com
Using concrete names, people, chocolates rather than abstractions usually helps a lot in teaching, because it leverages existing mental models and reduces the cognitive burden of tracking abstract tokens and behaviours. In this case, the alligators and their eggs behave so differently from anything familiar (egg hatching to whatever the parent ate?!) that I find the cognitive burden increases to the point of giving up. IMHO, for adults, a straight-up explanation with abstract symbols would actually be easier to comprehend.
I imagine, in this case, it's because us adults are (a) trying to figure out what exactly (what computing concept) Bret is trying to explain while we come across each rule and (b) trying to find logical explanations for everything. Children are not burdened with these things, and I'm guessing would have no problem going along with eggs that hatch into whatever their parent ate.
Personally, I think it's really cool. Real-life play-testing definitely required though!
Questions I faced:
"Which alligator is the mummy?"
"Why does the alligator want to eat the other one? Don't alligators eat people?"
"Where is the pink alligator?"
"When the egg hatches will it be a boy or a girl? Because I don't like boy alligators."
We had a lot of fun, but it didn't come anywhere close to achieving any kind of stealth learning outcomes, which seems to be its intention.
If you can make learning enjoyable, then the cognitive burden can be quite high, so long as the kid has fun with it.
It's the same with Settlers of Catan, supposedly a game for 10 years up. Our 7 and 9 year olds are doing just fine with it, picking up the strategy about as fast as I am, because it's fun!
The thing I'd not be sure of with the alligator game is whether kids actually find something like that fun... that's the real question in my mind. :)
Wait I'll start again...
Yes, that's SICP. It's pretty much inevitable that book would get mentioned here, because there's a whole group of people (not everyone) who learn best when they learn by doing, and SICP is the paradigmatic contribution of the learn-by-doing school to this topic.
My point is, maybe this alligator stuff could be made into a game and people could learn by playing. That's a well-verified method.
Is this an art project satirising computer science?
https://news.ycombinator.com/item?id=4586692 https://news.ycombinator.com/item?id=600736
Related: "To Dissect a Mockingbird" http://dkeenan.com/Lambda/index.htm
(also previously discussed on HN: https://news.ycombinator.com/item?id=7684210)
[0] I'm waffling because I'm not 100% sure of the exact relationship or whether it's well-defined, but it's a close enough comparison.
But that's a bit weak. There are tons of models which achieve these properties. Turing Machines are popular. Why lambda calculus?
One answer is that LC is easily augmented with things like simple types or System F types or Dependent Types to introduce the entire space of nice type systems that people are beginning to really enjoy these days.
A better answer is that LC is essentially nothing more or less than a minimal description of what a "name" means. LC provides the simplest, best notion of variable yet imagined and its influence strikes every time you use one in any language (programmatic, logical, mathematical, human).
This isn't the only way to go (for instance, the SKI calculus is equally powerful as LC, but manages to avoid all naming) but it's a remarkably powerful one which has, if popularity is any metric, been completely dominant throughout the entire history of languages.
So, studying LC is a good way to learn about all that.
[0] Side effects would have to be modeled "in universe", but the principle stands.
Something about pure lack of self-criticism perhaps.