 Hi, guys. Thank you. So hi, I'm McKaylin. My background is in particle astrophysics, and so I am mostly self-taught. As far as Python goes, I did both of my these Cs, these i, and C++. But starting off in undergrad, I did a lot of analyzing my data and visualizing my data in Python. Just really fell in love with Python. And then after my master's or second master's, I decided to start teaching. So I'm the founder of AstroTutors. I know the yes is confusing. There's only one of me. But yeah, so I started off by realizing that there's a lot of companies that want to teach young children, a lot of parents who want their young children to start teaching. And I sort of realized that a lot of pedagogical materials is a bit too much. It's a bit over their head. And I wanted to figure out a way to teach them. So I ended up writing my own curriculum and sort of discovering a few things along the way. So as far as it when it comes to what works, there were some things that really concerned me about the attitude as far as how we should teach children when we should start teaching them. One of the things that I got was that we should start as early as possible because it's like learning a language. We're going to talk about that. How is it like learning a language? How is it not like learning a language? Other marketing aimed at convincing parents to put their kids into coding classes ASAP, even though it might be inappropriate for them at that time. Then something I like to call parental-induced Dunning-Kruger effect. I get a lot of students who show up. And because they've gone through some tutorials online, they think they know Python already and they're like eight years old. And it's like, OK, let's go back and see if you know what a wild loop is, stuff like that. So children who come in, they think that they're more competent than they are. It affects how coachable they really are. They're more closed-minded. They don't want to start with the basics, and it's very difficult to teach them from there. Parents who really want to believe that their kid actually learned anything, and they really want their kids to be doing these super advanced things that they're not ready for. So the parent gets annoyed with me when I go back to the basics. They're like, oh, that's too easy for them. Why are you wasting their time, stuff like that. And then just children, generally the same children, that parent leaves the room. And all of a sudden they're like, I don't understand. And that's the worst thing because they've not been saying, I don't get it when they really needed to be. So it's really important to me to create a really understanding environment, and when parents ask me to work with their kids, I'm very honest about my approach. And sometimes they'll say, they're just not ready, and that's OK, which makes me less money, and I do enjoy eating, but ethics. Then there's just a necessary screen time. How old is old enough to sit in front of a computer for an hour when you're young? Just get outside. I mean, don't kick the kid, but you know what I'm saying. By the way, I've given this talk twice now. The jokes are all the same if you've seen me before. So let's start with what doesn't work, because positivity, right? So forcing kids into coding classes, they are not interested in. They show up, they don't participate, they don't absorb anything. It's not helping anyone. Pushing kids to do projects, and also they might just get a really bad taste. In their mouth, they'll say, this is boring, and I don't get it. Coding is hard, and not for me. That's not helpful. So you want to wait until they're excited. Pushing kids to do projects they just simply aren't ready for. People get really overzealous about the sort of things that they think their kid can do. They follow tutorials online, and they assume they totally understood what they did. It's really doubtful. And then just a linear path that assumes they'll remember literally anything. So it's really important to be OK with repetition, to put in cheap tests to see if they can really do something on their own, if they can explain it back to you. A lot of people in a lot of boot camps and camps that I've seen that work with kids, they just sort of zoom through the whole curriculum, and then it's like, oh, we did that last week, though we're not going over that again. So it's really important to keep bringing it up again. And then just removing the play from learning. So I think it's really one of the biggest challenges for me is finding ways to present new things in ways that really engages them and is fun and is interesting. Because the last thing we want is this sort of situation where we have kids and the parents send them to me and say, all right, my kids eight years old, it's about time they get a job. Make them a software engineer. It's just not going to work out. So the big problem is that we're fixated on teaching children to code, but I'd argue we're asking most of them to run before they can walk. I get a lot of kids who can hardly read and their parents really want them to code. So literacy is really important. Mathematical background. Do you know what a variable is in math? That's really helpful for us. Typing skills. A lot of my kids, they come to me, they can get the concepts, but they're so frustrated because they don't know where a colon is. And it just takes them so long to type what they want to type. So I put them on home keys and doing practice, like typing exercises and everything. And then creating inquisitive minds who aren't afraid to not know something. A lot of times they've done some tutorials, they come in and the expectation from the parent is generally, oh, they understood what we did and they should already know how to do that. And I just want to create students who are excited when they don't know something and it's an opportunity to ask questions, it's an opportunity to learn new things. And then just being able to work with others. So if you're sure you can do everything by yourself, then it's really tricky when you have to go out into the workforce. So now we're wondering how do children learn? How can we actually create a curriculum that is actually beneficial to them? And I have to say it's okay to start with observing. This is how babies learn, this is how people learn. And it's okay to spoon feed them. So I remember when I was doing my masters, I asked a question to my professor and I just wanted to know something basic, something fundamental to help me understand a larger concept. And he said, yeah, I don't just give people the answer like that. And it really put me off because I didn't understand something and I think that if you can sort of give people some hints and some information, they will learn, eventually they have to be able to do it on their own, but it's great to have some examples. So what I like to say is I like to keep frustration less than or equal to their frustration tolerance. Frustration tolerance usually changes with the person's age. So the older you get, the more developed your prefrontal cortex is, the more you're able to do more frustrating things and spend longer time with harder problems. And this is also why I think it's really great to work with neurodivergent students who sometimes really struggle with frustration tolerance. This can be a really big issue and so we find longer and longer and longer, they're able to sit with a problem and debug it. So it's really interesting and seeing how it maybe helps them. Not that I'm making any claims, but I think that they enjoy it at least and find it helpful. So I really think that observing should be the first part. I do a lot of examples the first day and I just ask them questions. What do you think will happen if I do this? What do you think will happen if I do this? And then they sort of get the idea and they get really excited and they start typing it out themselves to doing mimicry. I do this, you do this. I do this, you do this. And they start learning that way as well. And then they start to explore. So they start asking the questions. Well, what happens if you do this? What happens if you make that for loop run 100 times? They're always obsessed with 100 times, 1000 times. They really wanna see that. But random play is absolutely essential. I like to, if you guys have Netflix, there's a series called Babies and there's actually this person who studies. He has these really creepy baby bots and one of them he gives a lot of instructions and restrictions to. And the other group, he lets them just randomly play and the group of baby bots that randomly play with the toy learn how to actually effectively play with the toy a lot quicker. And he was talking, it's really interesting about how children learn and how that sort of juxtaposes that. So I thought that was really interesting. But just letting them ask why and what if a million times? If you don't have the patience for that, by the way, probably don't try teaching your kids yourself because I sit there all day answering the same questions over and over again, but I'm just really good at repetition. It's okay. But doing things that stimulate their senses and you might be wondering what can we do that can really stimulate their senses? Because there's no smells or tastes or anything. And I have some ideas later. But one of the things that I do use is turtle. I think turtle is a great pedagogical tool. It's also just a great tool for children to play around and make their own codes and really have a lot of fun. So here I like to explain the concept of a for loop with actually showing a turtle doing an action over and over again for each of these different colors. It changes color, moves forward 100 and then turns left. We generally start with a square and they are always really fascinated by this. So I asked them to add in more colors, change the degrees that it's turning, how far forward is it going and they play around with it and actually visually see how the for loop works and this is really fun. But feeling safe, encouraged and having adults who are excited about what they're learning is absolutely essential. So what about adult learners? Just take a bit of a tangent. I also get a lot of people who really wanna switch what field they're in. They come to me, they say I'm a historian and I want to learn how to be a data analyst. So what's really helpful is that they actually like math. So a lot of them, they've read something online being like you don't have to know math to learn programming but if you wanna be a data analyst you should probably like math. But otherwise, I pretty much use a similar system for teaching adults coming in from a non-technical background but they do seem to learn a bit faster. It's more of a curve. So depending on age, if you're at a certain age where perhaps computer literacy wasn't really something you grew up with then it can be really challenging. But yeah, so a lot of adult materials are just far too frustrating up front which is why I've sort of just scaled back and I'm like well this worked really well with the kids and I tried it out on the adults. They get through it a lot quicker but they tell me they're like oh I did this boot camp and I didn't get any of it and the way this explains it it just makes so much more sense. We just like I call it sort of a gentle introduction to programming. And I also take a bit more guidance from their professional goals, of course. One of the things I forgot to mention as far as frustration tolerance, I do this with the adults, I also do this with the kids. When we first start out I noticed that a lot of curriculums say here's how we set up your system on your computer and download Python and install Python and everything. I put that till after we get through the curriculum at least once because we sort of do it in a spiral and I just start with Google full lab and we just get coding the first day because if your first hour of programming is I can't get like Jupyter Notebook to work then they get really put off so that's sort of my method and I do that with the adults as well. So then we get to this question because I said in the first slide, parents come to me and they're really worried, they're like oh my six year old needs to start learning Python because it's like a language. But is it really? And the short answer is no, but yeah. There are some similarities. So syntax, grammar, syntax is like grammar and then communicating what you want to do, so communication in general, learning important vocabulary of Python of course and then of course you have different levels of fluency. So I'm fluent in French but maybe at like a B2 level it's not gonna be as easy for me to communicate what I want to do in French as a C2 native speaker and it's very similar in Python how long have you been coding in Python and what can you do and how comfortable are you with it? And then of course the learning mindset required, I think that being a language learner makes you a better learner in general. So mistakes are a part of the process doing embarrassing things in your second language is going to happen, making an infinite loop is going to happen in Python, it's all right. But the differences are stark. So pruning is something that we really worry about when we start to learn a language. When by the time you're a certain age, very young, your brain starts to prune the ability to pick up on different phonemes that don't exist in your native language. So learning another language as a very young child, growing up in a bilingual household is really helpful in that sense. The phonemes being the sounds that you make in a different language that you generally can't hear once you've pruned them. It doesn't just compute with you. Reading code also does activate the general purpose brain network, I'm no specialist in this, but essentially that is not the language processing center, the brain is what you need to know from this. So this multiple demand network is involved in complex cognitive tasks, such as things like crossword puzzles, math problems, anything really difficult is activated by this network and it's not activated with language. Coding and reading code actually activate other centers, not activated by math problems though, so that's really interesting. It's sort of its own thing. We don't have a code center of our brain yet, but maybe thousands of years from now we'll evolve to do that, but it is genuinely its own sort of thing in the brain activating a specific set of areas. But once learned, programming doesn't really seem to rely on the language regions, which is really interesting and unique. Oh no, stop that. So what about while learning? Language learning aptitude tests have a stronger correlation than math with gaining proficiency, but essentially if you can read really well, you can read a textbook, you can read some articles and pick up on stuff, so the study linked here, if you're interested, did show that the biggest indicator of an aptitude to learn how to code was actually if a student scored high on a language aptitude test. Interestingly enough, I think a lot of physics graduate departments are starting to lean more on the reading test in the graduate records examinations than the math test itself, because it seems that students who score higher in the verbal section tended to finish their PhDs at a higher rate, so that was really interesting. So being very literate and good at language does seem to help us learn to code, but how we teach languages effectively may guide how we should teach programming, so integrate it into every day-to-day life, involve play, move away from rote memorization. Anybody who speaks a language that is maybe dying out who has to deal with a lot of efforts in the school to sort of keep it alive, they tend to go for this rote memorization technique and students tend to hate that language, so it's not very helpful, so this is also an issue in the language learning community. How do we make languages exciting and keep kids interested? Raising your kid in a bilingual environment may create better programmers as well. Bilingual students tend to have higher language learning aptitude, better focus, increased cognitive flexibility, so they can code switch, go back and forth between their two languages, and it's correlated with mathematical ability as well, so that's very interesting. So on the same sort of line of thought, should we teach kids to code only in the English language? And living in France, I've realized most of the programs that teach people to code are in English, and so it creates this extra layer of difficulty that the concepts, the curriculum, they aren't explained in French, and that's just really, really difficult for them, so it seems that if we had more pedagogical materials in other languages, we'd have more accessibility, and then also it leads this question in this sort of English-centric environment, is it really the best language to be discussing programming in? Would we benefit from diversifying how we can sort of discuss things in different languages and everything, and I'm really interested, if somebody speaks a different language, how they would talk about a programming concept. Could code switching help describe concepts in more thorough ways? So overall, the exact wording you use makes a huge difference, and this sort of language that you're working in affecting how you think, when I started learning French, I was like, yeah, yeah, whatever, when I started learning a language that was very different from my own native language, I realized how truly impactful this is, so an example would be with meetability. This gives my students a lot of trouble understanding that something can be one thing, and then later it can change. It's really difficult for them. They seem to be confused, like, what is declaration, what's a variable even? So they'll just think equal is like to do something in the code, not to declare a variable, and then you can reference that later. And then they'll think, oh, it's a word, so I should put quotation marks around it, no, no. So it's really confusing. There's a lot of different mistakes that I see over and over. These are two that I see every single day. So it takes a lot of different ways of explaining it for students to really understand what's going on, but meetability is actually built into the structure of certain languages much, much better than it is in English. So I like to use the example of Irish, which is one of my other languages that I'm learning. In Irish, you don't say I am sorry. So in English, we literally say I am sorry, which is like you are sorry-ness itself, which is actually very bizarre, but we just infer being native English speakers what we actually mean. In Irish, you say, ta bron orm, sad is on me, technically is sad on me, but you use on me, meaning I am not always sad, it is on me now, it might be off me later. And ta, which is one of the two ways to say is, so is mishe m'kelin, my name is m'kelin, I am m'kelin, but ta shifur, it's cold outside because it could be cold later. That's a massive simplification, but you can see just how flexible certain languages are that English doesn't quite have. Now I'm not saying it's an ideal language to code in because they have no words for yes or no. It depends on the context of the question, but you can see it's really important that we learn to talk about languages in ways that people who speak a different language understand, code.org, for instance, has a lot of curricula translated and I'm working on translating my curriculum as well. Actually, Leila who is here is helping me do it in French right now. So what can you do at home? All right, I'm almost done. What can you do at home? You could provide puzzles, use real life situations to explain things. So you're making some cupcakes, maybe you say, while I have a batter in this bowl, I can keep filling this cupcake tin or while I have batter in this bowl, I keep filling this cupcake tin or for each sort of space in the cupcake tin, I wanna put this much batter in it over and over. And then I like to say, allow students to follow their own interests. So do things that stimulate their brain, it doesn't have to be programming. I think that people should sort of, let students come to it when they're ready. So music, languages, art, science, math are all great for development, it doesn't have to be coding. So when are they ready? When they show genuine interest, when they actually want to. When they start asking a lot of what if questions and try things if you show them simple code. When they're ready to work on their typing or are already okay at typing. So math background really helps. And I say like nine years old is all right. I will go sort of as low as eight. I really dislike it when I contract with other companies and they stick a six year old in my class. But I prefer over the age of 10. And I also use a spiral method if you're wondering about my curriculum, I'm sorry. So we use a lot of demos, ask a lot of what if questions, do a lot of guided many projects. And then we review and essentially we get through the curricula about three times but each time it's quite a bit harder. And this is how we go through it. So we focus on logic, problem solving, self motivation, developing confidence and being able to find the answers, good commenting, I once got a code that said this should be self-explanatory and that was the only comment. That does not happen in my class. So readable code with cynical variable names. And these are some of the examples that we do. So we make some code cake, we make a random story, choose your own adventure game is my favorite and then we have a turtle racing game that we play with a random module. So thank you. Thank you very much. So if you have any question, kindly move to the microphone and should gladly answer. Thank you. Hey, great talk. Thank you. I've been teaching my daughter to culture six years old. Picking up in quite well, but suppose it's a different situation being my kid understand a bit better than perhaps you might your students. I was just wondering like when it comes like frequency of teaching young children, what do you think is probably best there? Like, you know, every week or every day? Like ideally do it every day but you don't want to take away from other activities, so. Yeah, I mean, I think that it's a lot like if you put your kid in music lessons, how often would you practice piano or something? My mom's a piano teacher and so I grew up from the age of three learning piano. And you know, short bursts hopefully almost daily, like six days a week, I think is a lot better than sitting them down for, you know, an hour once a week for sure. I do get students who come to me only once a week for an hour and they do much better if we do two hours spread over the week in two to three sessions. Yeah. Okay, thank you. Thanks. Let's say I want to teach a small group of children from the start and it's a voluntary group. Should I allow the parents to be present? Yeah, that's a really good question. Last time I gave this talk it was like 30 minutes and then like five minutes for questions. So I had to like zoom through this. So thank you for asking that. People who they're programmers themselves, now this really depends, but I've noticed that the kids whose parents are software engineers will sort of sit there and start being sort of, I don't know if that's what they should be doing, which is so unhelpful to me because the kid starts questioning even doing the problem, much less thinking about the problem. But my students who do the best in the individual ones definitely have a parent who is super excited to be learning alongside them or is super excited for the kid to be learning and saying, oh, isn't that cool? Oh, well, what if you, and they're really engaged as well. It's lovely if that's sort of your attitude as well if you want to sit in, but if you're, it just depends on the parent. If you're more of a control freak, go get a coffee, it's all right. Did that answer your question? So how do we think about the scratch versus Python? So children start from the scratch, that is another language. Oh, scratch, you know, I've had a few students come in with scratch and they seem to really enjoy it and they start a bit younger with that and I think it's great. I can't really speak to learning scratch, but I definitely think that it's a great pedagogical tool. Thank you for your talk. At one point I think you mentioned that you also teach adults. I teach what? Adults. Yeah, adults. Grownups. Adults, yeah. Yeah. I have a bit of a... Yeah, so I wanted to ask about that. I also teach students at a university who have no technical background and what I kind of struggle with is teaching them algorithmic thinking. So not the language itself, but the way of thinking as a programmer. So I'm just wondering do you have any tips or tricks in this regard? Yeah. So I mean, of course, like real-world examples. I'll tell you the truth. I also teach GMAT, which has a critical reasoning section where they sort of have to do something like is that flawed thinking or would that actually sort of get to where you want to go, if you will? And it is one of the hardest things to teach somebody because so much of it is, are they an analytical, logical thinker? And it really helps if that's sort of where they're coming from. But as many real-world examples as you can possibly, I go until they tell me, okay, I get it, stop. So here's an example. All right, so here's another example. Here's another example. And when they look at me with that glazed-over look of, yeah, we get it, and then we're done. Okay, thank you. Thank you. Thank you.