Sean Tibor: Hi, Kelly. Welcome back. It's time for another episode of Teaching. Python been making some progress. So my name is Sean Tibor. Kelly Schuster-Paredes: I'm a coder who teaches and my name is Kelly Susteren, and I'm a teacher at Codes. Nice. Sean Tibor: Well, we're trying to sneak in a quick recording today because we've got some things we wanted to talk about and some stuff that we've been working on. So I think it's a good opportunity to just take a few minutes and talk about those things. But before we get into that and all this stuff we've been playing with in the classroom around code review and debugging and testing and all those things. Let's start with the win of the week. So, Kelly, do you have a win of the week to share? Kelly Schuster-Paredes: Well, I haven't been a win yet, so I'm hoping that it is a win. I guess it's a win in my cart. But your sketch last night, thanks to Russell that's made it came from Michael Kennedy. I'm not sure if someone tweeted back in Kennedy or maybe to get him to talk about it. I'm not sure I got to research that, but he says, wow, I students that really love music. I tried in five minutes of my practice, my head to just get in there and then that student ID. So. Sean Tibor: It'S routing code and making the music right with Snippet. Kelly Schuster-Paredes: So the cool. And then I feel like, yeah. Sean Tibor: The nice. Well, for me, the one this week has been doing some things with files for the students. So I always have this kind of weird feeling because we grew up with files and folders and having everything local in your computer. And our students just have everything's cloud based or it's just kind of there, whether it's a Google Doc or a Google Drive file or whatever. But I only think of those as files like you have one in your file system. They think of those as just the federal objects in the cloud somewhere. So it's interesting to me everything we talk about files, I always have to go back further than I think I should have to. Right, like, files and folders files and folders. And I'm like, okay, what is a file? What is a folder or what's? A directory. And I'm combining this with the command line a little bit. So teaching them some basic commands to get this concept of a file or a path or a working directory or relative path just enough that they can start to see when they open a file. A Python, how to open a file that's in the same folder, or why the file needs to be in the same folder as the program that they're running. And it worked pretty well. Yesterday. I was very excited to see it. I had the students working on their word list. It was an all Mac environment and Automac. There's a file in there underwrite user Share because I Dick or decks. There's a whole list of words. $235,387. I know I did this last year, but it just seemed like it went really smoothly this time. Not entirely sure why, but just talking through is the importance of files. Why we use that will help us grow beyond what we can type in ourselves to be able to our code for things that maybe we haven't already seen or aren't intimately familiar with. So it was pretty cool. We went through and found the longest words out of the list of that list. There are 520 for character words, and we went through different algorithms and techniques for finding the first longest word, the last longest word, and then the list of all the longest words. And you can see that students are getting pretty excited about it because we start with, well, here's a list of the first ten years. What's the longest from that? So we can see exactly what our algorithms working properly to her in the longest word. And then we grow up to the whole list. And so it's kind of neat because you can see that light will go off for at least some of them. That says, I can go through 235,000 words of Python, Python. I can do that in a second or two. That's a pretty cool. Kelly Schuster-Paredes: It's pretty cool. Yeah. It's a great lesson. That definitely was one that we wanted to keep and repeat. I know we talked a little bit about it, so I know it was because of I do that Google. Sean Tibor: Well, the other thing that is easy for us to forget, too, is that for our six graders, this is their first year with, like, a MacBook or a Windows PC or something like that. Prior to this point, they've had a school provided Chromebook or school provided ipad, which it's not impossible to get to the file system on those two devices, but it definitely takes a little bit more effort or you're not as dependent on it. So some of these students, it's not their fault that they don't know about files and folders. It's not like they've been asleep at the we already the files and folders in drugs right now that it doesn't transfer this illusion that they understand how to use their, you know, their full fledged traditional computer because they know how to use a Chromebook, and they know how to use a web browser and web based apps. But there's just a whole new layer that they're just seeing for the first time by moving to a Windows room back that they may not have seen before. So it's easy for us to forget that because so many of the other things that they can do on their computers, they're very adept at that part's. Kelly Schuster-Paredes: Not quite there yet comes back to that thing where we need more push in ad tech those days of attack, you just never have another computer science bill are on the we need to see something that is all over that day. Sean Tibor: Yeah. Sorry. I'm just hooking up my light here because it's not charged. Hey, look, it's lighting up. Okay? Kelly Schuster-Paredes: We digress. Sean Tibor: But I think that is a good segue into we're about six weeks into the school year. Now we've got a lot of new things that we're trying this year in some new approaches that we're experimenting with. So we wanted to cover some of those experiments today. And I think we have three major categories of experiments that we've been playing with mostly around the teaching techniques and the classroom engagement, not necessarily around the tools and the technology. So this is more of how to engage your learners sort of conversation. So the first one of the three, I think we're going to talk about code reviews. We're going to talk about testing strategies and verifying info and knowing that it works. Right. So this whole concept of it runs. But now what? And then the third that I wanted to talk about was the things that you've been doing around. Forget what it is. Remind me was out there. Kelly Schuster-Paredes: It's totally. Sean Tibor: Well, the main one was the code Tensei. Think this sound the way that you've been teaching some basic object ideas in Turtle, using Turtle to get this concept of object usage not necessarily object design. Does that make sense? Kelly Schuster-Paredes: Absolutely. Totally. Totally threw us off. Sean Tibor: So for those of you who may not be familiar with code reviews in a professional setting, a code review in a software development team is about working with another developer, typically a senior developer, to review code and use this as a process to improve the quality of the code, ensure that it meets your requirements, review it for any sort of issues that may come up. Whether that style issues, logic issues, functionality issues to ensure that the code that is being produced as the highest quality. And if it's done right, it's a learning experience often for both the junior developer and the senior developer. In terms of the way that code is written in the way it implements. Kelly Schuster-Paredes: Yeah. And in the teacher setting, this is something that's really not a new thing for a teacher. It's it's one of these basic lessons I think you learn in College and one of her, what can you do in order to build pair program car reviewing pairs, doing activity? How can you teach communication skills? How can you have a stronger student of the knowledge on students in certain fields? You really and get you on a product. And one of the things that I do is here's a thing in an essay. Get with part. Your question was kind of reading essays about telling you how to look for grant and students. And so not only enjoy all of the Robert Much trees, but they were in the past because in the past I showed them a lot more. So these guys are kind of set free. And then what I got back was a lot of really good ones and a lot of really bad ones. And I didn't want to put a bar in there, especially when it was their first act, and they were just eager to go. So I walked in the morning or you and get fit three people. Everyone's going to have eleven minutes. Just eleven is not what it was a good number. Eleven minutes. We're going to pull that one person's going to be higher even. And if you don't run out and find something else in the eleven minutes and we're going to look at the things that they approve, all of it, the basics that we have. And then we're going to switch. And then when we switch and it turned into something beautiful. Sean Tibor: So what were the results or what was happening now with that code review? Kelly Schuster-Paredes: Well, first of all, it turned into an empowerment. So cool. Kids, there was a student that was completely shy. She submitted in five lines of code, and the code was supposed to sort your concepts in there. So we were looking for so conditional statements. Are we looking for the list and not just put a list with the list? I'm looking for a stream and nation basis Mantoloking for equipment coding. And I gave this fall the school and to make sure that are into and then we already and it was really a such a lot asking questions. Nice. Sean Tibor: Well, I think there's a couple of things that I saw as I was observing this that really worked well. First of all, students use different language than teachers use. So when they're giving that feedback or they're giving the information, they often have an easier time explaining it to a fellow student, appear at the same level using words and language and structure. That makes sense to that student that learner. So I was noticing that all over the place. Yeah, there's this list or whatever. And they were using imprecise language but accessible language for the students, which was really important. The other thing, too, is that sometimes and depends a lot on the students. Sometimes students feel less pressure when they're having their code reviewed by a teacher and by a peer. Sometimes they feel more pressure. But because there was no grade associated with us, it was, oh, you're doing this for a grade. It was a low pressure environment for them to learn and be receptive to feedback. So there wasn't that same sort of like, oh, my codes on the wall in front of everyone or the teachers looking at my code and giving me a grade for it. It was more of, like a pure level assessment. And a lot more kids are really good about giving kind and helpful feedback at the same time. Kelly Schuster-Paredes: Okay. Sean Tibor: And then the last thing that I saw was that it's always fascinating to watch students explain concepts in their own words and just the way that they were talking about things. Like what's a conditional statement? Well, you have two choices and one of these can be true and the other one can't be. So it's going to run that code. Kelly Schuster-Paredes: Okay. Sean Tibor: Kind of cool. They're explaining it because it's not necessarily the word that I would choose, right. And that's a really beautiful thing. Kelly Schuster-Paredes: And the added benefit that this is one of the reasons why this has done a lot with essay writing is you always have those a few students at Excel in a certain subject, and everyone was able to see that code and see the level that we brought saying one. And it was all to the I totally the one a little bit more. So it does take a little bit of time. I. Sean Tibor: Think the comparison is very apt towards, like a a writing sample review. I wrote, the more that I get into teaching computer science more I realize that computer science is far more closely related is close cousin is writing language and expression like a second cousin is math, right? You can absolutely do math in this, but it's the same way I can write about math. Right? I can use writing to better explain my math. But the real structure here and the real value is that structure of create the code, have the peer review the code review that happens, and then have the revision and see the progress student make and document that along the way. So what did you start with? What feedback did you get? And then how did you use that to improve your code? Get students a lot closer to what they actually want to happen with their code. Kelly Schuster-Paredes: And I saw a comment. It was something that Eric had posted to it there's, like friend of ours at their listening to us a kitchen cleaning. Sorry. Eric Mathis had replied to someone about, Did you give cause feedback in code red? And I was so funny. I was like, I'm getting stuck in Twitter as things are coming at the same time. And that was another thing that came up. Sorry. I was thinking about the car. You're talking a feedback. That was always a critical thing that you do during writing free. Like how you did. Perhaps we can improve it with what and then did at that stage because because we make that's really cool. That's really creative. I like that. That isn't that a good idea. And it came out naturally because the again the person to everything I can from them. But perhaps to make the extra one, I had to remind them be a coding. Sean Tibor: Nice. Nice. Well, going from the peer reviews to more of the individual approach. One of the things that I've been working on a lot with my classes, and I know you've been doing this as well in parallel is going through more of that testing cycle per code and understanding how tests work. So this year, we've been focusing a lot more on our code challenges with Hi bytes. We've written some challenges, some daily challenges, and there's a lot of students who come back and say, well, my code runs, why doesn't it pass the test? So why doesn't it say that? It's correct? Well, it's the same thing as saying, you can print Hello World and and it's a valid code, and it runs, but it doesn't do what it's supposed to do is what's fascinating to me about this is this is where you really see the attention to detail come out. Right. So that first layer of attention to detail, which is my indentation in the spaces. Am I using the same variable names? Do I have neighbors? Because I have typos, like, all of those things come up as part of the first level of attention to detail. But the second level of attention to detail is definitely more thoughtful. And it's that idea of examining what am I expecting to have happened? Like what's the expected output of this code or the expected functional performance of it? What is it actually do? And then what's the gap in between? And we put this in a couple of different contexts. The first context is when we're doing a code challenge or something where there's a prescribed output that they have to match. It's one output, how they get those up to them. But it's the one output that they have to match. What are they intended to do that's defined by someone else? What is it actually doing? They have to look at at that and see the output in the comparison. And that works really well for them to kind of write to a spec. The second one that's probably harder to define in far more interesting to me, is when they create their own code, and there's the gap between what they have in their mind as their intent and what it's actually doing. This idea of I expected to be doing this, but it's doing this completely different thing instead. Why is that happening? Right. And I think what's our common refrain these days, it's not working. What's not working, right? Kelly Schuster-Paredes: Yeah. Doctor Guy walks in a doctor's office. It hurts. Great. Thanks. Sean Tibor: That's great. Kelly Schuster-Paredes: Fine. Sean Tibor: We can't really help you with that. So I find it fascinating as we go through this process that a lot of what we're doing is trying to unpack what they're saying and trying to get them to think more clearly, more specifically about what's happening, what's not happening and why there's a gap between the intent and the outcome is so really. I mean, I think this is like most of programming in a nutshell, right? Is this process of closing that gap and getting it to work the way you want it to? Kelly Schuster-Paredes: Yeah. And that's been a huge learning curve for me. Both of the courses that I'm taking right now are going through tests. I actually tweeted or message. Brian, once I was like, I'm finally getting into test being able and actually reflecting on my learning, how can someone say, right? You write a conditional statement and I do. I just write an additional strength at what do you want here that it's an easy it easy to accomplish. But when I start paying something more specific, that if I did it, I want to how exactly that that specific level and we're starting but not having if it coming out develop. I have that. Sean Tibor: And now it's creating this other fantastic problem to have, which is that the students are realizing, well, wait, if there's four tests and it looks for these four outputs, can I just make it so that if the input is this, then produce that output directly without doing any of the work in between. Right. So I've had a number of students that have, like, out smart. I'm writing the code so that it'll pass the tests. But then what I'll do is I'll sneak in some other tests that will have more random inputs. So here's an input of randomly selected numbers, and I know that the expected output should be and it changes every time they run the code. We did that with the list of numbers and, UM, all the even numbers in this list, what we generated random list of numbers. And in my test without calculated the expected result that I could verify and compared that against their answer. Kelly Schuster-Paredes: A funny story, because I had the same thing happen. I gave them the test was the simple function here hour 2 seconds, and the test set a two and four point 75. And it was funny. A lot of my kids still trying to get those functions. They don't want to put those parameters or anything in there. They want to put input. They're not using the function as stated as intended, and then even better. Even better was the beauty where they said hours equals too close for but and they're like what I got what you got. I'm like, okay, well, ours equals straight. But you didn't talk to that, but it was intended to convert any. So they're pretty smart thing to talk. How Hub can help see solution and go back to that book that we were reading about. We have the grain a logical problems. So give it. But when we give them the answers or we give them how we want the solution, then they can start getting of solving the problems. And I kind of feel that the way the test when we give them what the outcome should be, they can start seeing a start and finish what needs to go between. And it makes it makes that thinking process just change a little bit. No, it was for me because I definitely always know how to look to the test and my and my other courses, because I'm like that's what it is. Sean Tibor: How do I get that I work for we wouldn't have that moment, though. You need to solve for the general case, right. We wouldn't have that if it wasn't for having the test, because when they see that, oh, I could solve it for these three different inputs. All I have to do is produce these three outputs. It doesn't actually have to solve it for any other output. We get to have that conversation that says, but that's not where the point, right. The point of this is to write code that works for the whole domain of inputs. I come up with a range of outputs that are correct. Kelly Schuster-Paredes: How do you know that it's correct and also helps to highlight how crummy some of our challenge interpret. And I'm like, okay, you got 4.5. Sean Tibor: Yeah. Kelly Schuster-Paredes: I had it that poorly far, and that's the beauty. Sometimes I'm out there and I'm like, okay, Cashtown today. Well, what is it? Hold on. It's coming in my brain. This one. Yeah. Sean Tibor: Yeahi. Think it kind of leads into the third area. And this is something that I wanted to talk about was around this idea of how students go from that. I know a few different patterns. Now I can start to generalize, right. I can start to assemble these patterns that I know into larger patterns and larger solutions. And I think we start to see it in 7th grade. You can see it in its Ross form in 6th grade. But starting in 7th grade and 8th grade, that's where I think it really starts to take off and getting students to go beyond that. I know an answer to this. Probably one way to do it into will hear some interesting ways to solve this. Right. And that's where also having those really large data sets or the really large inputs or the randomized tests for the things that they can't predict ahead of time really goes a long way. Kelly Schuster-Paredes: Absolutely. I was going to say something, but we short on time if you want to go to teaching Basic as a a story, but they can wait until next time. Sean Tibor: So the last thing that we've been I've been experimenting with this year is really starting to get out of this idea. Here's the IDE that you have to use here's the Colab or the new or whatever into youth and right wherever you're comfortable. And so now we start to get into what are some of the advantages of different environments to code in different ways to set it up? What do you personally feel comfortable? So I've got some students who are very comfortable using you. Editor. I have students who are like, give me the Vs code and the command line. And how do we make this work? And what's really interesting about this is now we're starting to get them to turn in to have preferences for their coding. When they think about I'm going to write some code. I'm going to go to this spot and I'm going to write it, and I'm going to figure it out. And I think this is kind of like the last step in our middle school process of getting them to become comfortable with coding is when they start to express preferences and opinions about why they like to code in the environment. They do why are choosing to use this for a loop instead of a while loop? So writing the code one after another, we start to see that they're settling into this comfortable territory up. I can write code, and I can use it to solve problems, even though it may not be that it's their first choice or their first method is to write code for it. We're starting to see them want to write code and want to have preferences. And I think that that's a pretty cool sign that we're starting to see this year with our 8th graders more broadly than in the past. Kelly Schuster-Paredes: In 7th grade, I'm getting it. I have some really. I mean, they're out coding me already. I'll be honest. There's some there are some kids that are just the way that their brain works is so beautiful. Allowing on the same idea of teaching basics, but allowing them this agency kind of thing with their own code editor. We allow that in 7th grade. We do use more of the co lab environment because it's easier on us and we can give out our choice words. But I have this one student, and it's funny you're learning a date time module, and I just wanted them to learn how to do model Rebus documentation very simple in ten functions and how we can make code shorter. And he to calculate your son the work with it. It was going to the baby, too, but the way that he was thinking, he did do it next year, and he looked up the values. And then he added the value and the subtraction something with someone else. And I always cool. You don't know the day I'm in the next day. Sean Tibor: Then he came to me and he's like, I'm trying to figure out how to get the number of weeks. It's been so far since how many weeks it is until your next birthday. And then the number of days we thought about Div mod, and he's like, Wait, what's that? So I explained to him, you can get the dividend and the remainder when you divide two numbers using this Div mod function. And he just his eyes got big and they lit up and he's like, I'll be right back on it. It was so much fun to see brain. Kelly Schuster-Paredes: Like, just starts ticking. So him and this other student who I got into Pie Charman, is taking one of the courses that I'm taking, and I called a friend up, and I was like, listen, I've been stuck on this and I won't ask Mr. Tibor for help, but I just want to see what you do give it to him. He comes back with the solution. I was like, Well, that one doesn't work, but this is what I did. He's like, oh, I see what you did. There kind of like that. And I was like, wait, wait for it. Let me show you what this other guy did with a list within a list, comprehension with something, something he goes, what what? Wait. And it was just like, this beautiful thing. So those two kids are pairing together on a project going back to basics again, allowing this agency. I gave them a choice. Who do you want to pair with? They're going to do the card game. And I said, Listen, I have this card game that I've been working on for about three years. It's never been finished. It's got like, five different games in there, all started, and it's got tons of errors. And I'm sure the variables are crap, too, because it's been over the past three years. Can we use it and have fun? We're going to use it. They're like, we're going to finish your app for you. I'm like, thank, gosh, can you finish my database for that? Sean Tibor: Outsource our coding to all our six and seven grade, seven grade. Well, with about three to four weeks left in the quarter, what are your plans? What are you going to focus on for the last three to four weeks? Kelly Schuster-Paredes: Oh, my gosh. We're doing beautiful hardware. It's a love hate thing, but we're bringing that soldering. Finally, we get to get back into Soldering in about the beauty of soldering and how we can use that to prototype. We might not get into any of the actual products, but we're going to look at it. And we're bringing in Microsoft back in 6th grade, obviously. And we're using circuit playground. Sean Tibor: Nice, nice. And there's the Bell, actually. But, you know, for me, I think the last three to four weeks, I know that our students that are on top of things and really excited about it have been leaning forward in their seats the whole time are moving, and I'm going to keep up the momentum. But really, my goal now for the last three weeks is to get as many of the rest of the students to have that, AHA moment where things click and it starts just making sense to them. And they're just writing code and making it work. And so I think it's going to be a lot more examples in practice and try these things. And I'm going to bring in your sketch and we're going to play around with these things and hopefully get kids to have that moment where they lean forward in their seat and go, oh, I get it or it clicks so I can write some code. Now. I I have been noticing, and I think this is a little bit of getting back into the school year as well as me getting back into the teaching realm. I don't have as many students who are just having things start to click. If I ask them to write code on their own, they're lagging behind what they can read. Their level. Understanding code when they read it is still way ahead of what they can write on their own and how to compose it. So we're doing some things like I just had each student type out the entirety of the bagels game code from all wider. It's a book of small Python projects, and I told them, I want you to write everything. I Wan you to write the comments and to write the indentation. I want you to do every single bit of this code because I wanted to match in line for line character for character and you can't copy and paste it. I said this is the equivalent of copying something down to get the practice of the feel of the way it sits together. And it's like like riding a bicycle through your neighborhood instead of driving through. Kelly Schuster-Paredes: But he doesn't tell you that he left them and then made me deal with all their issues on indentation. They error. You didn't do that. Sean Tibor: Go figure it out because it's not copied, right? They didn't copy. Kelly Schuster-Paredes: He had so many errors, and I was like, this is not. Sean Tibor: Pretty. Get what you practice, practice. Kelly Schuster-Paredes: Absolutely. It right. Sean Tibor: So I'm going to have them just writing code the last few weeks, writing code, whether it's their own code, they're writing other people's code as long as they don't copy and paste it and want them to get that muscle memory of. Kelly Schuster-Paredes: I'm writing Python code a mile in wrapped around. Sean Tibor: Exactly. Right. Exactly. So that's my plan. I know we're running a little bit short on time now because you have a meeting to get to and I have kids coming soon and everything just to wrap up. We have our guest schedule coming up for the remainder of this month. We have some good guests planned, and we have some robots coming in and all kinds of fun stuff for the next few weeks of Teaching Python, we're going to try to get back on our weekly schedule now and the cadence of recording and publishing every week because we've gotten through that initial start of school and things are starting to smooth out in terms of our pacing and everything. We're going to be in here because of that. Kelly Schuster-Paredes: So just remember, we're not eating lunch because we're recording with you. That's good. Sean Tibor: It's a double benefit, right? Benefits here. If you want to follow up with us, we'd love to hear what you're doing right now. What you're finding with this new school year, things that are working really well, things that maybe need a little bit of help. You can always reach out to us through our website at Teaching Python FM. We also are on Twitter. Teaching Python. I'm at SM Tiger on Twitter and Kelly is at Kelly Pared on Twitter. And that's where we kind of live on social media. And I think there's no other real announcements this week. So for teaching Python this is Sean. Kelly Schuster-Paredes: This is Kelly in.