Learning Python and Metacognition

Michael interviews Ilana, a 10-year-old working through Python for Everybody and CS50, about how she learns when parts confuse her. She uses peers and mentors to troubleshoot imports and APIs, and Michael explores metacognition—thinking about what you know and don't know. The conversation draws parallels between jiu-jitsu discipline and how persistence and resource-seeking shape learning.
Chapters
schedule. But on Monday, I will be back to— or tomorrow, I will be back to watching the videos and then doing the projects.
So first, I'm super impressed that you're starting Harvard CS50. You realize that's a college course at Harvard?
Yes.
And did you watch the first video?
I watched like a quarter of it because it's like something 2 hours long. So I did watch a little more than half an hour, but I still have to finish the rest.
Yeah, that will be very impressive if you can work through that going into— well, you're just going into 6th grade for next year, right?
Yes.
Yeah, going into 6th grade and taking a Harvard course would be very, very impressive. But let's back up. Python for Everyone, how did that course go as a whole?
It went good. I think in the later sections, it was definitely hard to understand. And I think I didn't get all of the coding out of it. But I might do it again when I'm a bit older. And hopefully, I'll understand it a bit more. You know, some of, um, there were only a couple videos on maybe a few of the subjects, and I get— I don't think I understood it, or just into the last few subjects, but I did get to doing the assignments and figuring out how to run them.
So you would say you were able to do the assignments successfully even though you didn't completely understand the, uh, lectures.
Yes, or the running of the code part at least.
Got it. Um, and did you work with Colette, with Souwalaki, mostly alone, or somebody else?
Uh, a mix of all. I usually, I would work with Colette to see what she knew and if she needed any help, or vice versa. And then if I needed Souwalaki's help, I'd ask him.
Got it. And if you were to characterize it, you know, there are kind of technical aspects for how do I do this. There are also kind of conceptual aspects. Am I understanding what's going on here? Does that distinction make sense, that sometimes your questions might be kind of detailed, technical, how do I get this to work, and other times it's bigger, conceptual, what's going on here? Does that distinction make sense?
Yes.
And would you say you mostly went to Zulake with technical, detailed, how-do-I-do-it questions or big-picture conceptual questions, what's going on here, or a little bit of both?
Um, I think it was both. Sometimes I would ask him to explain stuff to me or just individual parts, um, the assignment I didn't understand what I was supposed to do.
And then with respect to, um, You were able to do the assignments, but maybe didn't understand it all. Is— did you realize that you did not have to understand it all to get the assignment done and kind of you got to the point where, uh, since I'm able to do the assignment, I just don't need to understand the rest of it?
Um, I did get to a point sort of like that. Um, I wouldn't say where I didn't have to understand it though. I'm definitely going to be going into that more later just so I can get more out of it. Because a lot of it, or a lot of the more complicated stuff was in with either multiple things you had to run or you had to communicate with APIs. And I think that was more of the stuff that I didn't understand. But yeah, some of the projects or assignments had things in them where you didn't necessarily have to understand everything, you could still complete the assignment.
Yeah, and with the APIs, were you able to get it functioning even if you did not understand exactly what it was doing with the APIs?
Yes.
Got it. You know, sometimes one version of Socratic is Socratic learning is I know what I know, I know what I don't know, and therefore I know what I need to know. Would you say that when you went to either Colette to figure something out or Zulaki to figure things out or the P4E, Python for Everyone course to figure things out, that you were, you kind of knew what you knew, you knew what you didn't know, and therefore you knew what you needed to know?
Sometimes. I think not all of the time I knew what I needed to know. But yes, it was a mix of both.
Do you see how in some ways it's sort of a paradox? Do you know what a paradox is?
Not fully.
Okay. So paradox, it's a paradox if you know something, but you don't know what you don't know. Because how do you know what you need to know unless you know what you don't know? Am I making some sense?
Sort of.
So here, let's, let's play around with this. So here you are, a 10-year-old trying to learn Python, right? And there are instructions, and some of the instructions make sense, and some of the instructions don't make sense. Right?
Yes.
And I would say that sometimes if it's a vocabulary word, you probably know that you need to understand the vocabulary word, correct?
Yes.
Sometimes it might be a function. Do you feel as if you have a pretty good understanding of what a function is in Python?
In basic terms.
OK, so you may not know— you may know that you need to use a function in Python, but you're not sure which function or how to use it. Is that accurate? Sometimes you got to that point?
Yes, I do use functions in the Pygame that I do, but I'm not sure if the functions that you're referring to is different or not because I remember us talking about that and it wasn't necessarily what I thought it was.
Yeah, well, the other thing is they're functions in mathematics. I don't think you've gotten to functions in mathematics yet, have you?
I have not.
Okay, so this is— see, this is, this is part of the paradox is if you know something, then if you just like forget a piece, you can say, I remember that piece exists, but I, I just need to go and find out what the word is or how, how this piece of code works or something like that. But if there's a world beyond what you know, a paradox is something where, you know, it's sort of— you're sort of stuck because you don't even know what you don't know. And so there's— I think it's a really interesting phenomenon of learning, because you could imagine there's this Ilana bubble, there's everything Ilana knows, and I'm visualizing it as kind of around your brain, you've got all this stuff that you know. And then there's this stuff farther out, and you don't know what's farther out. And how do you figure out, given what you know, do you go this way to find out what's farther out, or get this way to find out what's farther out? Am I making some sense?
Yes.
Um, and the reason it's called a paradox is, um, because you— it— you're kind of stuck. One way of thinking about it is if there are things that you don't know that you don't know, you're stuck. If you know you don't know it— so suppose Suppose that— what's a good example of a piece of code in Python?
Hello, world, I guess that's—
OK, that's a simple one. But if for some reason you forgot what hello, world is, oh, let's look up hello, world. I'm thinking more of a piece of language. What are some operators or some— what are some functions? Well, functions, I'm using the language.
Like if statements and stuff?
Yes, thank you. We can call an if statement a function. So suppose you forget how an if statement works, you, but you once knew what it works, then you kind of know what you don't know, that you know there are if statements that you kind of have used them in such and such a situation. And I forget exactly how this if statement works, so I need to go and learn more about how the if statement works. Does that make sense?
Yes.
But suppose there's a piece of code and Actually, you were talking about these things where you go outside the code. I forget what's that— that's called. You said you were learning that towards the end.
Uh, go outside the code?
Yeah, I'm not saying it very clearly. Um, there are— what were the last few lessons you, you, um, took?
Um, I forgot their exact names, but Uh, the subjects were pulling data from different pages.
Mm-hmm. Uh, and tell me what was challenging about understanding that.
Well, I guess the code in general, it was hard for me to remember and where to place them all because it did get complicated, at least for me.
Okay, well, complicated in a way. This may sound strange, but I think complicated is sort of easier to understand because complicated to me just means lots of details. You have to remember all the details. Maybe you have to write down the details. You have to look up the details again. But I think in a way, I think of complicated as not inherently hard to learn, just lots and lots of stuff, details to remember in order. Does that sound accurate to you?
Yes. There were a lot of parts.
Okay, so lots of details and lots of complications, but it's a different kind of thing if there's something that you don't even know what's going on, or you don't even know if it exists. And the reason, I guess I'm wondering about, isn't there something where you pull data from outside of the program?
Yes.
What's that called?
I'm not— I don't know if— or I'm not aware of the exact name. I don't know if he mentions it or I just missed it.
But were there situations where you had to pull data from outside of the code you're writing?
Yes.
And was that difficult or not difficult?
Do you mean— or because I had— I didn't know how to construct the code fully. But to understand it, it was difficult.
Got it. And when you did not know how to understand the code fully, did you ask Swolaki and he helped?
Yes.
What kinds of— I'm trying to develop a mental model of how you were learning the Python and where it became challenging for you. When I talk about developing a mental model of how you were learning it, Does that language make sense, that I could have a mental model in my mind of how your mind was learning Python?
I think so, yes.
Okay. So, and part of that is getting to know where you were on this boundary between you know what you know, you know what you don't know, and therefore you know what you need to know. Because in order to ask good questions, you kind of need to know what you don't know and therefore what you need to know. Does that make sense?
Yes, sort of.
Okay, this is fairly abstract and it's okay if it's tricky. And maybe I'll back up a little bit. And sometimes you would understand things by asking or talking to Colette, sometimes by going back and re-listening to the videos, and sometimes by asking Tlaqueya. Is that correct?
Yes.
How did you know when you're trying to understand any particular assignment in Python for Everybody, how did you know if the best way is to talk to Colette or go back to the Python for Everybody or go ask Sulaki? How did you figure that out?
Well, or do you mean— what do you mean the best way?
So suppose something's not quite making sense. Did you kind of randomly either go back to the curriculum, talk to Colette, or talk to Zolake, or were there patterns in terms of with these kind of things, Colette and I talk about it, with these other kinds of things, we have to go back and rewatch a video, and with these other kinds of things, I'd go ask Zolake. And so I'm wondering if there's any kind of way we can think about how you, learned when you were getting stuck on particular concepts?
Well, I don't think there was a pattern on if I had a question about this or this or that, I would go ask or go to a specific thing. I think most of the time if I didn't understand something, I would go to Zwalake because he has the knowledge and is able to, uh, explain it to me.
That's— that makes sense. And were his explanations usually pretty helpful?
Usually, yes.
Have I ever introduced the word metacognition to you before?
No, you haven't.
Okay. Uh, do you have any idea what it means, or do you want to guess what it means?
I don't.
Do you know what cognition means?
I've heard it, but I don't. Know what it means.
Okay, no problem. Cognition is basically a fancy word for thinking, and, and meta is kind of about, and so metacognition is thinking about thinking. Does that make sense?
Yes.
And I think, and there's a lot of research about this, that we become better learners when we not only are learning, but we're also reflecting or thinking or observing about how we learn. Does that make sense?
Yes.
It's not like super fast, but over time, as you— especially when you start to learn hard stuff. So when you start to learn hard stuff— when you're learning easy stuff, you don't have to think about learning or thinking about thinking. You just, you know, pick it up, no problem, that kind of thing. I would say Python for Everybody is pretty hard course for a 10-year-old. And so when you get into these places where it's hard, and especially if you do Harvard CS50, that's super hard for a 10-year-old or even 11-year-old. But I think metacognition is useful because then you start to think very— a lot more carefully. You observe. You observe your own mind, and you see, how well do I understand this? How well do I not understand this? How can I improve my understanding? Does that make some sense?
Yes.
So what are some concepts that were hard to understand towards the end of Python for everybody?
Um, I think some of the bits of code that pull data, or all of the bits that import things, or maybe some of the more complicated conditionals and bits that do a specific command. It was hard to remember them and just understand them.
Got it. Um, this is great. It's, it's great that you're able to articulate which parts are hard. So it turns out that in order to become a better learner, and I believe all of us can become much better learners, when you're learning easy stuff like back when you were in second grade and third grade, you don't have to become kind of a fancy learner, you know, it's pretty easy. But when you start learning really hard stuff, it helps to learn how to learn more effectively. Does that make sense?
Yes.
And part of that is reflecting on how we learn or being metacognitive about how we learn. And so when you say some of the functions were hard to understand, can you remember one— some of the functions that were hard to understand?
Um, or functions as in things that do a specific thing and not literal Python functions?
Or literal Python functions. I thought you said that there were some functions that were a little bit hard or some bits of code that were hard to understand.
Yes. I don't remember them in their fullness, but I do have images of them in my mind. For example, one of those, there would be an import urllib, and sometimes I would just blank on what that means. I'm still not sure right now. And I could go back and research it and I am going to. But so things like that, little bits of commands or whole pages, there were sometimes different scripts that you would have to use that just contained data. And it was, or that was hard for me, or complicated and had, or yeah, it was hard to understand.
Got it. Those are both interesting examples. So like pages of code and you would import them in order to complete the task. Is that what was going on?
No, I think those two are different. I didn't, I didn't mean for them to be connected, but the, those two are examples of.
Okay.
All right.
Import URL. You know what a URL is, right?
Yes.
And so what was complicated about import URL?
Or import urllib is— or I didn't really understand what it did. And the way it was used sort of confused me because I didn't know or want how to use it.
And was it import urllib as in library?
Yes, I believe so. There might have been something at the end, but—
OK. See, this is where, because I am not as far along in Python as you are, I'm relying on you to help me understand what it was that you didn't understand. But that's OK. I know a lot about learning how to learn. And does it make sense to you intuitively that if we become clearer about what pieces of what we know that we don't yet fully understand, that helps us either pinpoint the right question or pinpoint the right resource. So we become more effective learners. Does that make sense?
Yes.
And so the way I think of it is, when we're learning something complicated like Python, part of it we know really clearly. I'm sure there's some commands that you just totally know you're totally comfortable with. Is that true?
Yes.
And then there are other things that you have no idea, you haven't covered it, never heard of it, really don't know at all, right?
Yes. Yes.
And then it sounds like this import URL is in between where you kind of sort of partly know a little bit what's going on, but you don't really fully completely understand it. Is that accurate?
Yes.
Do you think that— how— so suppose, suppose Wolaki was not available and you really, you know, suppose there's this million-dollar prize if you can figure this out on your own. Do you think that you could figure out how— what that does and how it works on your own if you had enough time?
Yes. I mean, it depends on what it is. I have the whole internet. Available to me, so I would think so.
Got it. I mean, I'm thinking of the import URL piece. Is that something that you could really master pretty well? Suppose you had a hard Python assignment, and if you, if you use that correctly, then you would get a million dollars. Do you think you could figure out how to make it work?
I would certainly try. I think I could, yes.
I think, no, I think it's really interesting to think about ourselves as learners And it's interesting, the adjective Socratic can mean I know what I know and I know what I don't know and therefore I know what I need to know. Does that make sense?
Yes.
Because I think some people, oh, I don't get it, they run into something hard and they just say I don't understand and they give up. And I'm not being critical because learning hard stuff is hard, you know. And so a lot of people, if they run into something hard, they just give up. But I think part of— and this gets into metacognition— so cognition, cognition means thinking, metacognition means thinking about thinking. And so the way I see this as an intellectual tool or a cognitive tool is, okay, I'm learning something hard in Python, I kind of understand it, I don't really understand it, and then I have to, with my mind, figure out this is exactly the piece I don't understand. I have to need go read more on this, or I have to watch more videos on this, or I have to try it and see what works. Sometimes you can learn stuff by you try it, that didn't work, try it, that doesn't work, try it, that doesn't work, try this, hey, it works! You know what I mean? So, there are lots of different ways to learn how to learn something more effectively. And all metacognition means is it's a fancy way of saying you're watching your own learning and thinking so that you can become more effective at learning things that may be hard. Does that make sense?
It does.
You see how different that is from, I don't get this, I give up, I'm done? You know, it's very different. And in some ways, actually, this is an interesting thing. I would think that in jiu-jitsu you are very disciplined. Is that correct?
Yes, I think of myself that way.
So tell me a little bit, what does discipline look like in jiu-jitsu?
Well, if you don't count the actual calisthenics and training and you're just rolling, well then discipline, part of it means to keep being aggressive and not letting the other person beat you. Because one thing about jiu-jitsu is that it's really easy just to let the other person just take control of you. And let them do all the moves and have them just beat you because you don't want to try or you're too tired or too hurt. And I think part of the discipline is not doing that and pushing yourself to be better and to do better and to be aggressive and to not keep going if you're still tired. You might have had a really hard training past few weeks and you're gassed, but it takes discipline to keep going, especially if you have tournaments coming up or you're working for something.
I think that's a fabulous description. Now I want to turn that same kind of notion of self-discipline into learning how to learn. So suppose you were stuck trying to learn something really hard in Python and you try this and it doesn't work, and you try this and it doesn't work, and you try this, doesn't work. You know, you watch the video again, you ask Soulaque, you ask Colette, you reread something, you play around with the code and do something different. I would say that part of having self-discipline as a learner is you keep trying different things. Maybe you Google and watch different videos, you Google in different descriptions of it, that discipline as a learner, self-discipline as a learner, because it can become discouraging. You know, it could be that if you don't understand it, wow, this is too hard for me. I'm only 10. I'm going to give up. I walk away. And, you know, of course, sometimes we can give up. But do you know what I mean by discipline as a learner? Is you keep trying different things to help your mind understand it?
Yes.
Does it make sense to talk about self-discipline as a learner? As pretty analogous to self-discipline in jiu-jitsu?
Yes.
Okay. And how are we doing on metacognitive? Do you still feel as if you have some sense of metacognitive?
I think so. I think I'm getting more into that. Okay.
So because I'm not as advanced as you are in Python, I would think it might be interesting, maybe for next week if you're around, for maybe let's try to tackle something that you found very difficult in the Python for Everybody, and maybe you kind of understand it, don't quite understand it, and maybe we could figure out together to see if you could understand it more clearly. And we can include Googling or whatever. I'm not Zulawki, so I can't help you by answering the question, but I'm a great believer in learning how to learn. Does that make sense?
Yes.
Okay, does that sound interesting to work on becoming a better learner?
It does.
And do you see how that's a form of self-discipline similar to the self-discipline you need in jiu-jitsu?
Yes, I do.
All right, um, cool. Anything else for now?
Um, I don't think so.
Okay, in which case, uh, have a wonderful week, and till next time.
Okay, thank you, Michael. I'm sorry for the, uh, long wait.
No problem, my fault.










