Serious question: Has anyone tried this out on actual children? How did it go? Maybe children can more easily accommodate the number of arbitrary elements and rules the game requires, because as an adult, I find the alligator motif actively confusing.
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've been playing through Light Bot with our 7 year old. I always like when he gets to the levels where he needs to use functions, because he's learning about programming without even knowing it. He doesn't try to discern deeper meaning, he just enjoys playing the game and making the tiles light up. [1]
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. :)
> 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.
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.
I don't like this alligator analogy because it relies on magic. Whenever an alligator eats it transforms its eggs by no obvious mechanism. If some abstract mechanism is unintuitive then I don't see how decorating it with superficial real life analogies makes it any easier to understand. The unintuitive behavior is still there. At least draw attention to it by making the alligators wizards or something.
Good idea: express complex concepts in simple forms that children understand: multicoloured alligators that die when they eat other alligators or alligator eggs and then the eggs that they previously laid hatch, resulting in alligators that are the same color as the...
We need to have discussions on how to explain complex things in simple ways, e.g. to kids. Not every contribution to such discussion will be effective, or even complete, but it can still build up to some progress later on.
I, too, did not find this very understandable when I was trying to learn Lambda Calculus for the first time. Even now, it is still quite baffling how alligators eating aligators makes more intuitive sense than the regular notation (well, at least it's recursive). In the end, I was only really able to grasp Lambda Calculus from reading a hard book.
Frankly, I think the best way to learn lambda calculus is by writing code in Scheme or Common Lisp or some other language with a nearly one-to-one mapping between the language's syntax and semantics and what lambda calculus has. Learn by doing, in other words, and introduce hard concepts using code.
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.
When I first discovered this, I found all this bafflegab about alligators and eggs only served to confuse the issue. If you understand that a lambda expression is a rule for generating expressions which, when applied to a value, substitutes the value for the lambda variable, that is sufficient to have an intuitive grasp of what LC is all about.
I'm left wondering if anyone has made an app out of this, to obviate the need to print things and as well provide an onboard means of educating the user how the game works. This is still quite a complicated concept and I can't say I understand it better just because I've got toy alligators all over the place .. but with an app it could be a bit more intuitive. That in itself might be an interesting exercise ..
It's a model of programming. Rather, it's a remarkably simple model of programming. Any language could be interpreted [0] into it and thus its behavior is important for the comprehension of what "programming" means.
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.
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.