Brent is one of the greatest teachers I've ever experienced. I used to take classes from him (and TA some others he taught) and was consistently blown away by his enthusiasm and capacity for sharing concepts. He has a great essay on pedagogy as well (https://byorgey.wordpress.com/2009/01/12/abstraction-intuiti...)
If you're interested in learning some of the beautiful foundations of functional programming, I highly recommend checking out the lecture notes and assignments from his Penn CIS 194 class (http://www.cis.upenn.edu/~cis194/spring13/lectures.html)
Agreed! I taught myself programming, and Haskell was my second language. I was at Penn so I emailed Brent out of the blue, and he responded and was so helpful with understanding helping me understand Monoids, not at all judgmental, and so different from all the educational experience I had up until then. And it was serious gateway drug to mathmatics. Funny thing is a few years later I TAed an advanced Haskell class with Stephanie Weirich (https://www.seas.upenn.edu/~cis552/current/index.html), who was Brent's thesis advisor. All started with Brent!
I'll second this; he is a fantastic teacher. I had the incredibly fortunate opportunity of learning from Brent in my undergrad at Hendrix, where he currently teaches.
There are other comments here that praise his patience with regard to teaching these topics to a child. I can say without a doubt he maintains the same patience with all of his students - not just his children. If you ever have the opportunity to learn from Brent (be from a course, blog, or talk), I would highly encourage it.
I'm glad to see a post of his making its rounds on HN.
You did CS at Hendrix College? I did too ('11) and can't help mentioning it even though I have little to say... because hey, small school, tiny department, it's not often you run into another Hendrix CS alum, even virtually. And after years in "industry" I really appreciate the surprisingly good CS education there for a not well known school
How's the dept doing these days? Is Ferrer still there?
Just read Week 1 of this course - very easy to follow.
Although with a different instructor, there are later versions - http://www.cis.upenn.edu/~cis194/fall16/ seems the most recent, with plenty of updates since the spring13 course. I'll be reading more!
What is truly astounding about this is the patience to even attempt to explain free theorems to a 6 year old. Most parents would likely answer "math" and that would be the end of it. I don't (yet) have kids, but when I do I hope I have the wherewithal to recognize and take advantage of moments like these.
It's an immense amount of effort to do it consistently. And it gets harder with each kid, at least for me.
One of the things you figure out is that some kids aren't interested. And if your kid isn't interested in thinking about prime numbers, you're going to be hard pressed to change that. Conversely they will have interests that you don't share, and it's going to be harder for you to participate meaningfully in that beyond being generally supportive. They are individuals that way.
> One of the things you figure out is that some kids aren't interested. And if your kid isn't interested in thinking about prime numbers, you're going to be hard pressed to change that. Conversely they will have interests that you don't share, and it's going to be harder for you to participate meaningfully in that beyond being generally supportive. They are individuals that way.
I grew up in a family with 7 kids and my youngest sibling is just 12 years old. I remember when my younger set of siblings were born, I was thinking "I'm going to teach them EVERYTHING I've learned at a young age, and they will be way ahead of their peers." I failed to grasp just how much of their personality is ingrained in them from their DNA and that they might not have all the same interests as me. It was a great learning experience though -- when I do have kids, I'm not going to try and shove my interests down their throat. I'm going to pay attention to what they are drawn to and give them as many resources as I can so they can pursue that interest as much as they desire.
Yes, it's notable that Brent's son first was interested enough to ask him and then stayed interested as he explained.
You can't start telling your child about maths if they're busy doing something else. All you can do is wait for a moment when their curiosity spots something and try to feed that.
Even when you catch their interest it's easy to break it if you can't explain it, so los of kudos to Brent for navigating it perfectly.
My teenage son is a musician and is taking AP Music Theory right now.
I ask him to tell me about what he is learning, and he patiently tries to explain it to me, but I just nod along because I have no idea what he's talking about.
One thing that makes this easier is being rich. What I mean by that is for example, when my kid is asking me questions or wants to "do it myself!", the fact that I have a flexible schedule helps immensely, and that flexible schedule is possible because I can turn down work that doesn't give me that flexibility.
If I had a strict clock-in/clock-out job, and only had limited time to run errands, I'd have a lot less patience for waiting for my kid to do stuff or answering her questions.
I consider myself very lucky that I have that privilege and can pass that on to my kids.
Maybe it helps being rich, but just as a counter example, my grandfather was never rich. He was a clock-in/clock-out guy and still managed to spend a lot of time with me while I was growing up. He had a lot more patience than most of the "white collar" adults in my life ever did, and taught me lots of useful skills like how to fix a lot of electrical or mechanical things.
We actually made a decision to cut our income considerably in order to be as involved as we can in our kids upbringing - we're basically almost always able to go to school concerts, we always eat together, we practically never aren't with them at bedtime, etc..
It's great. But I think we missed the balance a little - there are so many life experiences that are out of reach that we parents experienced when we were kids. Yes being tight with our kids is awesome - but when they get old enough to spread their wings a little, and when they're inquisitive about new things, then supporting that is exceedingly difficult when you're of low means.
School skiing trip? Not a chance, way out of our price bracket. Holiday abroad? Same, the interest is there, they're keen to learn geography/languages/culture. Piano lessons? Same, we've got a keyboard, one child is really keen and show some ability but we don't have means to support him in that and let him find fulfilment through that creativity.
But I do get to talk Fibonacci series; build fires in the woods; teach them about how aliens with 0, 4, 16 fingers count; but buy an up to date globe, or take them for a train ride, or go on a boat, or have a pet, or visit a mountain, ...
My problem is not time so much, nor fostering inquisition, but resources to develop the questioning in to solid foundations. Our kids are not the free-spirits of knowledge-hunger we anticipated because we instead have to follow economics.
It's not "being rich" that helps, it's having a high hourly rate of pay relative to expenses. Many rich people work 60+ hr weeks with travel, and don't see their kids much. Many non-rich people are stay-at-home parents or extended family.
Of course, they can hire nannies, governors, and tutors to fill in the gaps...
Dad of 8 here. It makes life so sweet when we acknowledge the child's capacities. Notice it didn't take that much patience...it's almost just a matter of creatively overcoming a language barrier.
I'd think it would also be a great opportunity to have access to a young, malleable mind that's unencumbered by a significant body of past experience and preconceived notions. Every answer is like a pure function...it's derived from first principles rather than coming an existing corpus of 'state'. It seems like a tremendous opportunity to expand your own viewpoint with perspectives that you'd naturally ignore based on your own past experience.
A good friend of mine was the grandson of a couple that ran a school for gifted children. When they retired, there was a video produced about their careers and, at one point, they were both asked what they liked best about their jobs. His grandfather answered, "Getting to speak to the children every day." His grandmother answered, "Getting to listen to the children every day. I always liked her answer better than his.
As a parent, I agree. One should not shy away from talking about "advanced" topics. Kids are naturally curious and bright and I think we should encourage their desire to learn and understand complex things.
I worry that if you try to dumb down things for kids, they might become interested in dumb things. :)
Also, as the OP mentions, it can be a fun "pedagogical challenge" to try to explain free theorems or turing completeness or MySQL sharding to a young child. And you may find a clever way to describe it, that they can easily understand, which is satisfying for both of you.
When my daughter was 10 we were waiting in line to checkout at a Home Depot. She asked me what was algebra. I think she had heard the older kids mention it. I responded with a question. "A plus B = 10, and A minus B = 1. What are the values of A and B?" She puzzled it over while I check out. Then her face lit up like a whole realm of knowledge had just opened up to her, and she proudly told me the answer. It's a special moment that we will both always remember. She told me that as a camp counselor that she has challenged younger kids who seemed bored with the same problem.
Do challenge your kids intellectually beyond their years and you might be pleasantly surprised. My daughter heads to CERN in two weeks to study anti-matter, and I have no doubt that our brief intro to algebra at a Home Depot has a small role to play in that journey. Maybe Star Trek did too :)
I have three very inquisitive kids and I love trying to explain complex topics, like reinforcement learning, to them in a way that they can understand. The best thing I get out of it is clarity for my own understanding, or gaps/lack of clarity, so it's a valuable exercise.
People don't give children enough credit for what they can really understand.
I remember distinctly teaching my oldest daughter how to do a basic cipher - like direct substitution and she got it immediately. I also taught my son how to do pin bumping and pin counting/picking on locks with my lockpick set. I even bought him a transparent set of master locks to practice on and he would sit for an hour at the age of 4 picking those locks. The obvious downside now is that he knows how to get into everything!
Very cool to watch what are basic principals being applied at the very basic level.
Exactly. My 4 year old sometimes surprises me like that. Last week she asked me how you can talk into a mobile phone. So I said, there's a tiny transmitter in there, and it sends the voice over waves in the air. So she's like, "OK" and I thought it went over her head.
Then yesterday she asked: "Why couldn't you call gramps when we were on the plane?" I told her that the mobile phone wasn't close enough to the receivers on the ground.
It amazed me that obviously some facts had been stewing for a week in that tiny head. And out comes another question.
When my mother died, I was asked to think of one word to describe her. The best word that I could come up with was "teacher." One quick example: when my own child was 2 or 3, we spent some time with Grandma at Yellowstone National Park. Grandma walked with her grandchild through the park and explained geisers, plate techtonics, and many other topics of geology. I rolled my eyes and thought, "Really? He can barely speak and you are delivering a college lecture?" But then I remembered all the college lectures of my own youth. It's amazing how much even the youngest minds can absorb.
One of my biggest failings as a parent has been to assume that my children will learn things somehow without me teaching it to them. If anybody learned 1/3 of what my mother taught them in detail, they learned a lot.
Note kid asked "dad what are you doing", not "what is functional programming". That's a simple call for attention, and it was equally suitable to close the book and play frisbee with him.
No. Children like to copy their parents, and want to learn about what they do. If a six year old wanted to play frisbee, he probably would have asked to play frisbee. At the very least he would've made his boredom clear pretty quickly. Yes, he wanted attention from his dad, but best of all was being able to learn about dad's grown up stuff by doing something they both enjoyed.
On a serious note, you may be right in that it's a simple call for attention, but at least with my kids those are the opportunities for the best instruction, because the kid is usually bored, curious, and wants attention. If you give said attention, and answer questions in a way that they can think through and reason about, they will grok stuff you never expected.
Yes, those are equally suitable choices as you say. Why are you implying that stopping to play frisbee would have been the more "equally suitable" choice in this situation?
Who's to say you can't talk about functional programming while playing frisbee? Who's to say that 9/10 times the kid gets some rough housing when he asks?
And much more likely: who's to say that the overstimulated little monster that asked 15 questions in 5 minutes doesn't need a little dose of adult life to encourage some self-play?
Explaining things to them and seeing the dawn of understanding in their eyes in easily my greatest joy in life. As a parent, I basically get to relive this xkcd[0], over and over, every day.
We take it to an extreme - we unschool[1]. We do our best to treat our daughters as any other member of the family, expecting to act as adults to the extent that they're able to do so. My nine-year-old spends much of her days right now playing Roblox and Star Stable, but even that is punctuated by her coming to us with random questions about things she's interested in. If I'm not head-down on a project I take the time to explain as best I can. If I'm otherwise occupied I always at least take the time to say "Go search for <insert keywords>" and follow up with once I'm free.
The results have, so far, been incredible. Our oldest was a late reader by the standards of the testing done in government schools, but once she ran into something she wanted to do that could only be accomplished by reading, she achieved fluency more quickly than I would have ever expected. For what it's worth, that "something" was an online RPG where she had to do quests to progress. In order to do that, she had to be able to read the quest text.
These days she's engrossed in the "Pegasus" series by Kate O'Hearn, and devouring them at a rate of ~1k pages per week. She'll have finished the series by the end of this week and I'm hoping she'll pick up Asimov's "Norby" series next. If not, she'll find something else that interests her and continue reading well into the wee hours of the morning I'm sure.
Huh, that's the first time I've heard of unschooling, it seems like a really cool concept. If you don't mind me asking, where do you live and what are the laws like around unschooling there? How are people's reactions?
I often tell my kids "I'll explain that when you're 16", or "you're too young for that, go out and play". This has proven to be very effective in motivating them to think for themselves, or ask someone more collaborative (s.a mom)
And it is endlessly entertaining to see just how quickly their minds can wrap around a subject you would think is too advanced for them. Its a matter of establishing a common language. Seeing that light go on in their eyes is unbelievably satisfying.
>\lambda x.\, 6 was also surprisingly difficult for him to guess (though he did get it right eventually). I think he was just stuck on the idea of the function doing something arithmetical to the input, and was having trouble coming up with some sort of arithmetic procedure which would result in 6 no matter what you put in! It simply hadn’t occurred to him that the machine might not care about the input. (Interestingly, many students in my functional programming class this semester were also confused by constant functions when we were learning about the lambda calculus; they really wanted to substitute the input somewhere and were upset/confused by the fact that the bound variable did not occur in the body at all!)
Just goes to show, our intuition works on linear types.
I have a series of programming assignments in my introductory course that has students write simple functions in Python. One of those functions is to consume nothing and returns their (the programmer's) current age. So for example, you might write
def get_my_age():
return 21
The students' reaction to this in office hours can be... interesting. I am curious how many of them actually follow the comment at the bottom of the question, and what they think:
> Reflect on the difference between creating a variable with a constant value and creating a function with no arguments and a constant return value.
Up to you to decide if this has any pedagogical value. The real learning objective was to "write a function that has no arguments but returns a constant value", so getting them to draw big conclusions about the nature of functions and values and so on is outside the scope of this little activity.
One of those functions is to consume nothing and returns their (the programmer's) current age.
This is - or at least might be - ambiguous. Current age as of implementation time or current age as of function invocation time? And while a result in whole years is a pretty natural and obvious choice for the age of a person in absence of an explicit requirement, it is certainly not the only sensible choice.
What I find surprising is how easy it is to understand functions as being made up of other functions (+), as opposed to functions that are not (constant functions).
I'm curious what you mean. Is the problem that it is a constant function, or that you are asking them to ignore parameters? Or is that missing the point, still?
A function with a linear type uses it's parameters exactly once. The concept of "linear type" doesn't relate to a the concept of "linear function" except in an abstract mathematical way.
I think the problem is that our intuition is more or less based on a mechanical world in which the concept of a side-effect free or ineffective input is foreign.
I was learning category theory at the time. I gave them some element-chasing problems so they could work on the same areas I was studying, although at a different level of abstraction.
We also did some stuff on permutahedrons, and relating single-character-replacement paths (I think Nabokov calls these “rooks path”, when each step is a word) from AAA → BBB, to geometric cubes, and 2³, etc., but I didn't collect the worksheets for those into the same document.
I'm currently teaching an introductory programming course using Python (for people who have never programmed), and the level of abstraction you are using in your worksheets inspired me to actually update the exercises on my worksheets I'm using for the course (e.g. break down concepts even further and use more repetitive tasks to actually help students get the hang of these concepts).
When my son was around five or six, I did a similar exercise to explain the difference between prime and composite numbers.
I told him that a number X is composite if you can fit X apples into buckets and end up with the same number of apples in each bucket.
I drew 6 apples and asked whether they could be divided into buckets with an equal number of apples in each. It was immediately obvious that they could. My son circled one group of three apples, then another group of three apples.
Then I drew 7 apples. He realized that you couldn't divide 7 apples into baskets and have each basket contain the same number of apples.
Voila! A prime number.
Then we started talking about the frequency with which prime numbers occur on the number line, how important they are to fields such as cryptography, and the existence of dense Bragg peaks among primes in judiciously chosen intervals. By the end of the conversation, he had discovered a new recursive prime generator and submitted a paper on it to arXiv. Who knew?!?
> I told him that a number X is composite if you can fit X apples into buckets and end up with the same number of apples in each bucket.
Wrong; X is composite if you can fit X apples into buckets and end up with the same number of apples in each bucket, with at least two apples in each bucket.
"You gotta tell the children the truth. They don't need a whole lot of lies. Cause one of these days, baby, they'll be running things." - Jimi Hendrix, "Straight Ahead"
This is something I saw over and over again long before I had a serious interest in technology or science at all. It’s an attitude that’s rampant in liberal arts courses.
There are “kiddie” versions of everything from History to to Music Theory to Grammar. It used to really frustrate me in undergrad how many things taught as almost moral absolutes were upended the following semester.
I sort of get it that even in junior high and high school, the teachers don’t really know anything beyond the kiddie version, so that’s what gets taught.
But at the college level, there’s no excuse for that. There’s a certain amount of science envy that some liberal arts professors have. They want to be able to say that there is one and only one way to understand a historical event or way to compose music.
Milton Babbit was famous for this in the music composition world and argued that music needed to be “elevated to a higher form like that of math or physics” and that no one expects advanced math to be accessible to lay persons. Therefore music shouldn’t be comprehensible by anyone who doesn’t have a PhD in music theory or composition. This was actually a pretty popular attitude in the “classical” music world from the 1950s to the early 80s, and the music written during that time reflects it.
Sorry to get so far off on a tangent, but while that specific fad has come and gone in music composition, there remains an inferiority complex among liberal arts academia that is extremely problematic and a general attitude among professors of all stripes that some people just can’t handle the truth: that outside of religion, there are no absolute truths.
Getting back to the Hendrix quote, I absolutely agree. Teach children as much of the truth as you know. They can take it. In my own experience teaching violin, I’ve found that I get the best response when I treat the students the most like adults. About 20 years ago I started bringing in little vignettes about music theory and history with my youngest students (4-6 years old) as a break between lesson segments where we were focusing very intensely on specific violin techniques. When I realized that they enjoyed both the context switch and the color commentary about why exactly we do these kinds of things, I brought more and more of that to the table, and it’s been very successful.
Obviously, this isn’t a robust study, it’s not meaningful in a larger scale, and it doesn’t prove anything at all.
But if the theory is that young students can handle a lot of uncertainty and a lot of advanced material at a young age, then my experience is, at least, not evidence that it’s false.
Deep down inside, I think that we need to be a lot less careful, protective, and hand-holdy about what we expose our children to. They can handle it.
FWIW, "rectangles" is a visually/geometrically natural way to express "buckets of equal size".
And "1xN doesn't count" can be expressed nicely as "it can't just be a line", or "the line must be folded up into a shorter rectangle [because more compact shapes are nicer]"
Your six year old came up with a new recursive prime generator over the course of a conversation introducing him to the concept of primes, and then submitted this as a paper to arXiv? Do you have a link to this paper on arXiv?
> once the guesser thinks they know what the function does, the players switch roles and the person who came up with function specifies some inputs in order to test whether the guesser is able to produce the correct outputs.
In Zendo when the guesser offers the wrong rule, the 'master' must tell them an (input,output) pair where the guess disagrees with the rule the master had in mind. Then play continues.
Come to think of it, I find Zendo much harder than the game described in the article. I think it’s because the inputs (arrangements of shapes) are more complex than numbers, and the outputs (Booleans) give you less information than numbers.
I've actually never gotten to play real Zendo, but you can make up your own class of koans, like Lisp programs or regexes. Maybe the real-worldness of arrangements of pyramids does give them more of a Zen feel?
This is fantastic. Reminds me of Hofstadter's conversations between Achilles and a Tortoise.
The trouble with most math I've encountered isn't the concepts, it's the quality of the abstractions we use to represent and interpret them.
The best(worst) example I can think of is the Alice/Bob description of cryptographic protocols, where somebody's idea of teaching is, "let's take these symbolic representations and instead of just shouting them at you slowly, I will obfuscate them with a set of conceptually unrelated words and repeat the representation word for word in a more patronizing way."
I for one really like reading about Alice and Bob. Amongst other benefits, it helps me consider how, even if currently just a theoretical algorithm, that particular protocol could end up being used in real world communications.
I disagree with your example being a bad and reason is right there in your comment: the word "protocol". From wikipedia we find that a "communication protocol is a system of rules that allow _two or more entities_ of a communications system to transmit information...", where I have underscored the essential phrase and cryptographic protocols are just a subset of communication protocols.
The reason that Alice and Bob are introduced is because they are different entities and each has different powers, restrictions and goals. If you want to do a correctness or security analysis of a protocol, introducing and defining these parties is hugely important and useful. Otherwise, its very easy to make mistakes about where information is in the system and how it is being manipulated. More generally, there is a philosophical approach called operationalism [1] that demands that all science theories be couched in terms of protocols so we don't make mistakes about what they say.
(A)lice and (B)ob set up a channel.
(E)ve is an evesdropper.
When the only thing you change is to personify A, B, and E in your narrative description of a logical protocol, you are not making an analogy or an abstraction.
Sequence diagrams, BAN logic, UML, pseudo code and other protocol notations are not teaching analogies, they are specifications. Some more useful than others.
Teaching analogies and abstractions are more of a mix of use cases, literally analogous functional relationships, black boxing, edge cases and boundary conditions. The "why" behind the "how."
That Alice and Bob can be replaced in every situation with (A) and (B) means they are not abstractions or analogies, and are therefore patronizing cartoons that obfuscate useful information.
And it works with procedural programming also! I've been teaching programming in schools since I was in school myself - teaching the kids who know more than their teachers, as well as the kids that teachers don't think are ready to code.
Procedural thinking is something that anybody who knows socks come before shoes can do. Conditionals can be understood by anybody who wears different clothes on a weekend than on a schoolday. Loops can be understood by anybody who can eat a bowl of soup by drinking a single spoonful and then doing that again and again until the soup is gone.
Kids can definitely engage in computational thinking from a young age. We just need to offer them the opportunities to do so.
If you're interested in learning some of the beautiful foundations of functional programming, I highly recommend checking out the lecture notes and assignments from his Penn CIS 194 class (http://www.cis.upenn.edu/~cis194/spring13/lectures.html)
There are other comments here that praise his patience with regard to teaching these topics to a child. I can say without a doubt he maintains the same patience with all of his students - not just his children. If you ever have the opportunity to learn from Brent (be from a course, blog, or talk), I would highly encourage it.
I'm glad to see a post of his making its rounds on HN.
How's the dept doing these days? Is Ferrer still there?
http://www.cis.upenn.edu/~cis39903
[0] https://hackage.haskell.org/package/diagrams
[0]: http://cis.upenn.edu/~cis194/fall16/
After completing that one, he recomended the NICTA github repo https://github.com/data61/fp-course/tree/master/src/Course
Disclaimer: All subject to IIRC
One of the things you figure out is that some kids aren't interested. And if your kid isn't interested in thinking about prime numbers, you're going to be hard pressed to change that. Conversely they will have interests that you don't share, and it's going to be harder for you to participate meaningfully in that beyond being generally supportive. They are individuals that way.
I grew up in a family with 7 kids and my youngest sibling is just 12 years old. I remember when my younger set of siblings were born, I was thinking "I'm going to teach them EVERYTHING I've learned at a young age, and they will be way ahead of their peers." I failed to grasp just how much of their personality is ingrained in them from their DNA and that they might not have all the same interests as me. It was a great learning experience though -- when I do have kids, I'm not going to try and shove my interests down their throat. I'm going to pay attention to what they are drawn to and give them as many resources as I can so they can pursue that interest as much as they desire.
You can't start telling your child about maths if they're busy doing something else. All you can do is wait for a moment when their curiosity spots something and try to feed that.
Even when you catch their interest it's easy to break it if you can't explain it, so los of kudos to Brent for navigating it perfectly.
I ask him to tell me about what he is learning, and he patiently tries to explain it to me, but I just nod along because I have no idea what he's talking about.
That is the most depressing thing I've read in a good while.
If I had a strict clock-in/clock-out job, and only had limited time to run errands, I'd have a lot less patience for waiting for my kid to do stuff or answering her questions.
I consider myself very lucky that I have that privilege and can pass that on to my kids.
It's great. But I think we missed the balance a little - there are so many life experiences that are out of reach that we parents experienced when we were kids. Yes being tight with our kids is awesome - but when they get old enough to spread their wings a little, and when they're inquisitive about new things, then supporting that is exceedingly difficult when you're of low means.
School skiing trip? Not a chance, way out of our price bracket. Holiday abroad? Same, the interest is there, they're keen to learn geography/languages/culture. Piano lessons? Same, we've got a keyboard, one child is really keen and show some ability but we don't have means to support him in that and let him find fulfilment through that creativity.
But I do get to talk Fibonacci series; build fires in the woods; teach them about how aliens with 0, 4, 16 fingers count; but buy an up to date globe, or take them for a train ride, or go on a boat, or have a pet, or visit a mountain, ...
My problem is not time so much, nor fostering inquisition, but resources to develop the questioning in to solid foundations. Our kids are not the free-spirits of knowledge-hunger we anticipated because we instead have to follow economics.
A good friend of mine was the grandson of a couple that ran a school for gifted children. When they retired, there was a video produced about their careers and, at one point, they were both asked what they liked best about their jobs. His grandfather answered, "Getting to speak to the children every day." His grandmother answered, "Getting to listen to the children every day. I always liked her answer better than his.
Because if it's the former, I'm impressed you have even one second to be on HN!
I worry that if you try to dumb down things for kids, they might become interested in dumb things. :)
Also, as the OP mentions, it can be a fun "pedagogical challenge" to try to explain free theorems or turing completeness or MySQL sharding to a young child. And you may find a clever way to describe it, that they can easily understand, which is satisfying for both of you.
Do challenge your kids intellectually beyond their years and you might be pleasantly surprised. My daughter heads to CERN in two weeks to study anti-matter, and I have no doubt that our brief intro to algebra at a Home Depot has a small role to play in that journey. Maybe Star Trek did too :)
People don't give children enough credit for what they can really understand.
I remember distinctly teaching my oldest daughter how to do a basic cipher - like direct substitution and she got it immediately. I also taught my son how to do pin bumping and pin counting/picking on locks with my lockpick set. I even bought him a transparent set of master locks to practice on and he would sit for an hour at the age of 4 picking those locks. The obvious downside now is that he knows how to get into everything!
Very cool to watch what are basic principals being applied at the very basic level.
Then yesterday she asked: "Why couldn't you call gramps when we were on the plane?" I told her that the mobile phone wasn't close enough to the receivers on the ground.
It amazed me that obviously some facts had been stewing for a week in that tiny head. And out comes another question.
One of my biggest failings as a parent has been to assume that my children will learn things somehow without me teaching it to them. If anybody learned 1/3 of what my mother taught them in detail, they learned a lot.
[1] https://bookstore.ams.org/mcl-5/
I have not read this, but it's from the same person who helped create "anchor modeling" and I find that quite interesting.
On a serious note, you may be right in that it's a simple call for attention, but at least with my kids those are the opportunities for the best instruction, because the kid is usually bored, curious, and wants attention. If you give said attention, and answer questions in a way that they can think through and reason about, they will grok stuff you never expected.
And much more likely: who's to say that the overstimulated little monster that asked 15 questions in 5 minutes doesn't need a little dose of adult life to encourage some self-play?
Explaining things to them and seeing the dawn of understanding in their eyes in easily my greatest joy in life. As a parent, I basically get to relive this xkcd[0], over and over, every day.
We take it to an extreme - we unschool[1]. We do our best to treat our daughters as any other member of the family, expecting to act as adults to the extent that they're able to do so. My nine-year-old spends much of her days right now playing Roblox and Star Stable, but even that is punctuated by her coming to us with random questions about things she's interested in. If I'm not head-down on a project I take the time to explain as best I can. If I'm otherwise occupied I always at least take the time to say "Go search for <insert keywords>" and follow up with once I'm free.
The results have, so far, been incredible. Our oldest was a late reader by the standards of the testing done in government schools, but once she ran into something she wanted to do that could only be accomplished by reading, she achieved fluency more quickly than I would have ever expected. For what it's worth, that "something" was an online RPG where she had to do quests to progress. In order to do that, she had to be able to read the quest text.
These days she's engrossed in the "Pegasus" series by Kate O'Hearn, and devouring them at a rate of ~1k pages per week. She'll have finished the series by the end of this week and I'm hoping she'll pick up Asimov's "Norby" series next. If not, she'll find something else that interests her and continue reading well into the wee hours of the morning I'm sure.
0: https://www.xkcd.com/1053/ 1: https://en.wikipedia.org/wiki/Unschooling
It’d be nice if traditional school had a better balance where personal interests could be explored in a structured and formally accepted way.
Just goes to show, our intuition works on linear types.
> Reflect on the difference between creating a variable with a constant value and creating a function with no arguments and a constant return value.
Up to you to decide if this has any pedagogical value. The real learning objective was to "write a function that has no arguments but returns a constant value", so getting them to draw big conclusions about the nature of functions and values and so on is outside the scope of this little activity.
This is - or at least might be - ambiguous. Current age as of implementation time or current age as of function invocation time? And while a result in whole years is a pretty natural and obvious choice for the age of a person in absence of an explicit requirement, it is certainly not the only sensible choice.
Deleted Comment
When my daughter was in 4th grade, I volunteer-taught a group of pull-out 4th–6th graders, so that she could have some peers to do math with.
You might enjoy this set of math worksheets I created for them. https://www.scribd.com/document/15720543/Squarrows [EDIT: now also at https://drive.google.com/open?id=1hfzm3Rvm4xpwp_xHUKBHxuIEgf...]
I was learning category theory at the time. I gave them some element-chasing problems so they could work on the same areas I was studying, although at a different level of abstraction.
We also did some stuff on permutahedrons, and relating single-character-replacement paths (I think Nabokov calls these “rooks path”, when each step is a word) from AAA → BBB, to geometric cubes, and 2³, etc., but I didn't collect the worksheets for those into the same document.
I'm currently teaching an introductory programming course using Python (for people who have never programmed), and the level of abstraction you are using in your worksheets inspired me to actually update the exercises on my worksheets I'm using for the course (e.g. break down concepts even further and use more repetitive tasks to actually help students get the hang of these concepts).
Thanks a lot for sharing your ideas!
I told him that a number X is composite if you can fit X apples into buckets and end up with the same number of apples in each bucket.
I drew 6 apples and asked whether they could be divided into buckets with an equal number of apples in each. It was immediately obvious that they could. My son circled one group of three apples, then another group of three apples.
Then I drew 7 apples. He realized that you couldn't divide 7 apples into baskets and have each basket contain the same number of apples.
Voila! A prime number.
Then we started talking about the frequency with which prime numbers occur on the number line, how important they are to fields such as cryptography, and the existence of dense Bragg peaks among primes in judiciously chosen intervals. By the end of the conversation, he had discovered a new recursive prime generator and submitted a paper on it to arXiv. Who knew?!?
Wrong; X is composite if you can fit X apples into buckets and end up with the same number of apples in each bucket, with at least two apples in each bucket.
"You gotta tell the children the truth. They don't need a whole lot of lies. Cause one of these days, baby, they'll be running things." - Jimi Hendrix, "Straight Ahead"
There are “kiddie” versions of everything from History to to Music Theory to Grammar. It used to really frustrate me in undergrad how many things taught as almost moral absolutes were upended the following semester.
I sort of get it that even in junior high and high school, the teachers don’t really know anything beyond the kiddie version, so that’s what gets taught.
But at the college level, there’s no excuse for that. There’s a certain amount of science envy that some liberal arts professors have. They want to be able to say that there is one and only one way to understand a historical event or way to compose music.
Milton Babbit was famous for this in the music composition world and argued that music needed to be “elevated to a higher form like that of math or physics” and that no one expects advanced math to be accessible to lay persons. Therefore music shouldn’t be comprehensible by anyone who doesn’t have a PhD in music theory or composition. This was actually a pretty popular attitude in the “classical” music world from the 1950s to the early 80s, and the music written during that time reflects it.
Sorry to get so far off on a tangent, but while that specific fad has come and gone in music composition, there remains an inferiority complex among liberal arts academia that is extremely problematic and a general attitude among professors of all stripes that some people just can’t handle the truth: that outside of religion, there are no absolute truths.
Getting back to the Hendrix quote, I absolutely agree. Teach children as much of the truth as you know. They can take it. In my own experience teaching violin, I’ve found that I get the best response when I treat the students the most like adults. About 20 years ago I started bringing in little vignettes about music theory and history with my youngest students (4-6 years old) as a break between lesson segments where we were focusing very intensely on specific violin techniques. When I realized that they enjoyed both the context switch and the color commentary about why exactly we do these kinds of things, I brought more and more of that to the table, and it’s been very successful.
Obviously, this isn’t a robust study, it’s not meaningful in a larger scale, and it doesn’t prove anything at all.
But if the theory is that young students can handle a lot of uncertainty and a lot of advanced material at a young age, then my experience is, at least, not evidence that it’s false.
Deep down inside, I think that we need to be a lot less careful, protective, and hand-holdy about what we expose our children to. They can handle it.
And "1xN doesn't count" can be expressed nicely as "it can't just be a line", or "the line must be folded up into a shorter rectangle [because more compact shapes are nicer]"
Dead Comment
Your six year old came up with a new recursive prime generator over the course of a conversation introducing him to the concept of primes, and then submitted this as a paper to arXiv? Do you have a link to this paper on arXiv?
This part was sarcasm.
> once the guesser thinks they know what the function does, the players switch roles and the person who came up with function specifies some inputs in order to test whether the guesser is able to produce the correct outputs.
In Zendo when the guesser offers the wrong rule, the 'master' must tell them an (input,output) pair where the guess disagrees with the rule the master had in mind. Then play continues.
The trouble with most math I've encountered isn't the concepts, it's the quality of the abstractions we use to represent and interpret them.
The best(worst) example I can think of is the Alice/Bob description of cryptographic protocols, where somebody's idea of teaching is, "let's take these symbolic representations and instead of just shouting them at you slowly, I will obfuscate them with a set of conceptually unrelated words and repeat the representation word for word in a more patronizing way."
Great piece of writing.
The reason that Alice and Bob are introduced is because they are different entities and each has different powers, restrictions and goals. If you want to do a correctness or security analysis of a protocol, introducing and defining these parties is hugely important and useful. Otherwise, its very easy to make mistakes about where information is in the system and how it is being manipulated. More generally, there is a philosophical approach called operationalism [1] that demands that all science theories be couched in terms of protocols so we don't make mistakes about what they say.
[1] https://plato.stanford.edu/entries/operationalism/
When the only thing you change is to personify A, B, and E in your narrative description of a logical protocol, you are not making an analogy or an abstraction.
Sequence diagrams, BAN logic, UML, pseudo code and other protocol notations are not teaching analogies, they are specifications. Some more useful than others.
Teaching analogies and abstractions are more of a mix of use cases, literally analogous functional relationships, black boxing, edge cases and boundary conditions. The "why" behind the "how."
That Alice and Bob can be replaced in every situation with (A) and (B) means they are not abstractions or analogies, and are therefore patronizing cartoons that obfuscate useful information.
Procedural thinking is something that anybody who knows socks come before shoes can do. Conditionals can be understood by anybody who wears different clothes on a weekend than on a schoolday. Loops can be understood by anybody who can eat a bowl of soup by drinking a single spoonful and then doing that again and again until the soup is gone.
Kids can definitely engage in computational thinking from a young age. We just need to offer them the opportunities to do so.