Sean Tibor: Hello and welcome to teaching Python. This is episode 129, and today we are talking about live coding, or code alongs. My name is Sean Tibor, and my. Kelly Schuster-Paredes: Name is Kelly Schuster Perez, and I'm a teacher who codes. Sean Tibor: Nice. Well, welcome, Kelly. This is another one of our quick bite series. So just a short topic talking about something that we are both interested in, but one of us leads it and the other one follows and contributes. So this is your time to lead. And I'm really excited about this one because this is something that we pioneered it locally for us. You and I put this together and figured out that this actually was pretty special, and we really enjoyed doing it. So take it away. Kelly Schuster-Paredes: Yeah, 100%. I still remember when I first started teaching Python, I was watching you and I was like, damn it, how does he do that? Here I am struggling and trying to hide my note, trying to look at the code in the background to make sure I was coding exactly what was going to work. And it wasn't something that came naturally for me, but I had a couple of breakthroughs a couple of years ago, and I was like, oh, my gosh, I just did this by myself and it was great. Sean Tibor: Isn't it such a good feeling, too, when you're. What? It doesn't have to be perfect. It just has to feel good. Kelly Schuster-Paredes: 100%. So this has become a staple in my classroom now, and the kids already come in and like, are we doing a code along? Today, especially with 6th graders, we do a constant code along where they generate the ideas and we just code together. I give them guidance, and I know in my head that I'm going to, for example, talk about lists or I'm going to talk about conditionals. So I guide the questions for the topics and then just go with the flow. And then in eigth grade, we do code alongs, but for a different purpose. We'll get into all these little things, but I do coat alongs with the notion that I don't necessarily know all the documentation. This is something I picked up from you. Let's go read the documentation. And why did we make that mistake, and why is that not picking up, just helping them to see that. You can go online, read the documentation, or in this case, recently, go to chat, GPT or Gemini and say, listen, this piece of code is not working. Can you research and give me the documentation to help fix that? And that's that stack overflow feeling that we used to have. Sean Tibor: Yeah, let's start with where this came from. In that first year, you and I were experimenting with a lot of different ways of communicating the ideas of computer science and python and coding and all these different concepts, you and I made choices. And this was as much our personal style of teaching as well as the way we like to learn. And experimenting with this led us to this place where we moved away from a lot of the static examples and slides and pre planned examples into something that was more improvisational, where we would have a general outline of where we wanted to go and some very clear learning objectives about what we wanted to demonstrate and how we wanted to discuss those. But instead of having it pre planned, structured, and canned, we decided we were going to be doing a live cooking show in front of everyone. Here's how we're going to make the stuff. And there were a lot of benefits to me that became evident early on. I think a lot of this came from my own dissatisfaction with some of the computer science classes that I had taken, where I really struggled to comprehend what was happening in the lecture because it happened so fast and I couldn't see it develop. It was, here's a concept, here's a coding snippet of that example. I'm going to point out three things in that coding sample, and then we're going to move on to the next thing. And I couldn't see how you got there. Like, I couldn't see the journey of going from that empty screen to here's the code that actually works or functions. So once you're already familiar with a coding language or with something that can be fine, you can process quickly because you have all the context and you can recognize everything. But I always found it was much easier as a beginner or learning something new to see the process of developing it, including all the warts and wrinkles along the way, all the things that didn't go right to get to that thing that actually did work, 100%. Kelly Schuster-Paredes: It's that cognitive science. The benefits for me, and I'm guilty of it. Guilty as charged. In the first year, definitely, I had that prepackaged slideshow, and I was like, oh, yes, and here's a for loop, and here's a wild, true loop. And, okay, now go code. And that wasn't very beneficial for the cognitive learning for the kids. And we know, and we believe that we learn by doing active learning. There are opportunities for passive learning where they need to take in the information, maybe understand the vocabulary, look at how a piece of code is parsed. I sean, a code is parsed and really dissect those elements. But active learning, really, one engages the students and the kids have to do. They look at the board, they have their syntax errors, they have their indentation errors. And my favorite saying, while we're actively coding together, is, that's you, not me. My code works. So what did you do? Let's look at that. And that just takes that computer coding to the next level, right? The students are writing hundreds and hundreds of lines of code within the first couple of weeks of school, and they're not just passively taking in information on why Python is better or why this concept works. Sean Tibor: Yeah, that was really for me, one of the key differences that we uncovered with this was that it was always funny to me that students would look at me and unconsciously or consciously compare their coding abilities to my coding abilities. They would say, oh, Mr. Tibor, you're so good at coding. I would never be that good. And I have to remind them that I didn't start as a great coder. I started as a terrible coder. I was awful at coding at the beginning, and it took years of persistence and perseverance and development to get there. And this is like a miniaturized version of that. If we just put the code on screen and say, here's the perfectly working code, not only is it hard for the learner to see that, it also makes them incredibly vulnerable to all these insecurities about, I will never write code like that. It's so beautiful. It works the first time, the whole thing. Code never works the first time. Code works after you test it and after you make sure that it's right, and after you find all the little edge cases and bugs and everything. And this process really reveals that to the learner. They see from the very beginning, from the very first lines of code, that code doesn't just appear. It is developed. It's created over time. And even with something like chat GPT, or stack overflow or whatever it is, you still have to find a way to get it to that place over time. And that's what this live coding does. It makes that process normalized for them 100%. Kelly Schuster-Paredes: And it's funny, because I remember the first time I took Michael Kennedy's course on APIs, and I did the weather API, and I practiced it, and I went through his course, and I coded along with him. And then I was like, okay, I'm going to teach this. I remember us doing it because we both code it differently, right? You were like, oh, I'm going to code it. I got in there, and it wasn't working. Some of the things and I had forgotten to reassign a function that had a return value, and it was giving everything I can to not look at my cheat sheet. And I was just like, no, we're going to problem solve this together. At times, the kids can lose interest. They'll say, oh, well, she's going to solve it. And then I would say, you know what? I cheat with candy. The first person who can solve this problem for me gets the candy, and it's like, boom, oh, you forgot to assign the value. Or you didn't assign two variables because it's returning two variables. So you're not only improving your own problem solving skills as an educator, being able to code on the fly, but you're also helping the kids to construct these solutions, to empower them with the critical thinking skills, and to just, like you said, show that you do make mistakes. You are human. Coding can be difficult, and it's okay. It's okay to have that struggle and that little actual benefit to trying to problem solve is what makes it fun. Sean Tibor: Yeah, there's all these internal benefits for you as the educator, for them as the student, but there's also a lot of classroom benefits, like the engagement and the communication and the working together and having some fun with it as a group is also really great for building that sense of community that helps them collaborate in the future. So if they know how the other students are struggling or succeeding or having those breakthroughs, they start to cheer each other on a little bit too, right? There's a bit of that. Okay, we got this. Hey, great job. There also can be a little bit of a darker side where sometimes kids feel dumber. They feel like, I'm not getting it as fast as everyone else, or that kid's always getting it quickly. And so the pacing of this is also important. In addition to the reassurances that I make mistakes, too, I don't always get there. Sometimes I go down the wrong path. Sometimes I can't figure it out, and I have to go ask chat GPT, or I have to go look at the documentation. Finding that pacing and finding that right level of normalizing the coding process and all of the starts and stops and wrong turns that comes with it is also really important in some ways. It's probably better not to get too good at live coding or to do examples that, you know, the exact output. You really want to make this something that is a process of discovery, co discovery with the students and with the learners. Kelly Schuster-Paredes: Yeah, 100%. I don't feel like I'm ever too good yet. At coding, in fact, I always push the boundaries. So just last week, I was like, you know what? We just did APIs and we did basic APIs. Done that unit, and we have two classes left before we go into our next unit. Hey, guys, we're going to do beautiful soup. They're like, what? I haven't done this in ages. Let's just go into this library and we're going to start doing beautiful soup. It uses a request model. Let's go. And I start going into it, and as I'm telling about beautiful soup, and really it's stealing information from the web page because you like to use the word stealing because it really increases that engagement and it really just enhances the understanding for them. Because as we're going through and we're looking at a simple website, I'm going through the process of pulling information. I'm talking through the process to try to get myself remembering this because I haven't done this in three or four months. It's really good. But it also increases that confidence with the kids, increases that engagement. So the kids are really helping to solve the problems. So they're like, oh, I know how to do this. And I'm going to go help Johnny over there, who's struggling to write something. And you just have a classroom that becomes a learning lab. It's often noisy. I often have to regather the kids. Sean Tibor: Noisy is generous. It's pure chaos sometimes, right? Kelly Schuster-Paredes: Yeah, luckily, sometimes I have my teaching partner, she's back there because as soon as she sees I'm going to do something random that's not on the list of things, she's out there going, oh, crap, I think I better listen into what she's about to do. Kind of like what I did with you. I was like, oh, crap, he's about to go rogue. I better go find out what he's going to do. Sean Tibor: What was great about that was some of those lessons were the best ones I ever did. They were so exciting for me. Because you're taking a risk, and to be clear, you're absolutely taking a risk. Anytime you do live coding, I think that API lesson, I got the Chuck Norris jokes API and discovered in the middle of the lesson that not all Chuck Norris jokes are appropriate for a 7th or 8th grade classroom yet. That was also part of the fun. The students all went like, oh, maybe we shouldn't be looking at that. And I said, maybe you're right. Let's find a different API. But they remembered that. They remember those lessons because the unexpected happened. That really led to that better reinforced understanding because you also can say, hey, remember that time when we looked at the inappropriate Chuck Norris jokes using an API? That's what an API is. Or remember that time we made the list of these things and it's personal and relevant to them because it's not the same list that second period had or third period had. It was their list and they remember it. So those sorts of impromptu on the fly learning opportunities really do lead to a deeper, better understanding for the learners. Kelly Schuster-Paredes: 100%. And as you were talking, I was thinking about this. It actually helps the teacher understand where the kids are at. We have these things called show your knowledge or checkpoints or exit tickets. When you are live coding and you're constantly engaging with your students, whether you have twelve or 20 or 30, you can see the faces of students, you can see who's providing information, you can see who's struggling to get the syntax because you have to pause. You have to pause after you type. Because I type a lot faster than definitely a lot of my 6th graders. Some of my eigth graders type well, but you can see when they're like, it's not working, it's not working. You get an understanding of who's the child that has the perseverance, who's the child who can ask for help, who's the child who's giving help. And you get a better checkpoint and understanding of what each kid does. And I don't have to necessarily assess them. I can tell you who are my top coders and who are my struggling coders just because I see them. And it's funny, I just started this year. We have floor seating like we've always had, but now I have the whiteboard behind me and I sit facing the kids on the floor with the desk and my computer as I'm live coding. So I'm looking at my screen, looking at the kids and the codes going on behind me, and it's like I'm in it with them. And you really get a better understanding of your students learning and it's a great benefit. Sean Tibor: Yeah. As you were talking, it made me think. Not to change gears too much here, but it made me think of the interview process for coders as well. One of the things that has been popular has been asking coders to live code something, this language. Can you live code something for me? And it's interesting because some people go really structured. I heard someone say, I want you to reverse this string in python or flip this string around. And I was like the reverse, like, a string slice should be, like, one line of code. You can do that. And he's like, oh, no, you can't do it with libraries. I had this moment where I thought to myself, the benefit of live coding in a professional setting, when you're interviewing someone or you're showing someone something, is that you get a window into way that they think. And that's what our students are doing with us, is that they get a window into the way that you think. So, in a professional setting, when I'm interviewing someone and I want them to write code for me or even just explain a technical project that they've worked on, I want them to go into the detail, not because I care what the detail is. I honestly don't care if they can reverse a string or not. I hope they can. That's kind of important. But I don't care which method they choose. And, in fact, I'm more impressed with the person who says, oh, it's this, right? Or it's any one of these three ways is the fast way to do it. And depending on the context, I would do it a different way based on the need. That whole visibility into the thinking process is vital to computer science and computational thinking. They need to see how you think. It's the whole thing about in math class, make your thinking visible, show your work. Live coding is showing your work, and it gives students a chance to do their work alongside you. It's one of my favorite things that we did in the classroom, and I'm jealous that you get to do it so often, because it is the most naked view of a thought process that I can come up with in computer science, because you have to talk your way through it. You have to make the mistakes. You have to solve them. And students and learners get to see that and be a part of it. They're not just passive observers. They're actively engaged with it 100%. Kelly Schuster-Paredes: I was just. While you were talking about that, I was just thinking about this video I watched yesterday about those new skills. And this is probably a little bit more off tangent, but it helps to be able to live code, but it's this idea of problem solving and creative and communication and willingness to solve problems that you don't know in an interview that person that's like, okay, here's my resume. This is what I did, et cetera, et cetera, et cetera. And here's my exact knowledge of what I have right now. How is that beneficial if that person cannot go beyond that resume, beyond that learning, and for me, I think the live coding, it's beneficial for the kids. Yes, of course, that's why I'm doing it. But it's really beneficial for me. It pushes my learning. And I think with teachers who are new to coding, if they don't take that risk with live coding, they don't want to get to remember what it's like to be a newbie, to be a kid's learning. And two, you don't push your own skills if you stand behind a PowerPoint or you stand behind the hours and hours of code, that code that you practiced for hours and took from a book and rewrote it, and you're just regurgitating it on the screen, how is that fair to the kids going to the fact of the AI? If I'm just regurgitating information out of AI and using it in the classroom, but then telling the kids that they can't, how is that beneficial? We've got to model what we expect from kids and live coding. Yes, I want to be the person that can help the kids and I need to have a little bit more knowledge, but I don't have to have all the knowledge. That to me is where the growth comes in as an educator. Sean Tibor: Yeah. The only thing that I would add to this, and this is just more a key part of this, and you're not going to be surprised that I say this, but make sure when you're doing this that you plan time at the end to review and reflect on how the process went and talk about where you had the best successes, where there were struggles, where the errors happened, why they happened, understand what you could do differently next time to prevent them. That metacognition and reflection of the learning process and of the live coding process is really important to role model as well, because that way the learner sees all of it in context. Yes, we got to the end, but where we started, what we went through to get there and how we finished is really important to summarize at the end and reflect upon, because then that way the learners get to see that it's okay. They can get to a place where it works out, but it doesn't have to be perfectly smooth all the way there. Kelly Schuster-Paredes: 100%. And now I just want to summarize all the things because I think it's a nice little summary since we are metacognitively on that path right now. So for live coding, cognitive benefits, active learning, improved problem solving, enhanced understanding what you said with error normalization, addressing the errors as they happen, metacognition, massive massive things. I would also add on there, critical thinking, that buzzword that's floating around everywhere. But critical thinking, being able to search for the answers, see that there is a problem, needs to be added onto that list. Do you want to summarize the engagement part? Sean Tibor: Honestly, this is probably my favorite thing about it is students lean forward. They're not sitting back passively taking notes or getting bored thinking about their next class. They're leaning forward. They're writing code on their keyboard, and you can see it. So that level of engagement is a lot higher. There's also a lot of communication, and the pathway is definitely between you as the teacher and the learners. You have to be thinking out loud the entire time, talking through everything. But there's also the communications between the students, the inner student communication that's really important. Also where they can support each other or answer questions. Make foster as many of those communication channels as you can. But then the other thing that I really like about the participation is the building of confidence. If they go through the process with you, with your support and guidance to help them get to something that works, they will have more confidence the next time that they try to solve something. Kelly Schuster-Paredes: Yeah. And then just a few challenges. Pacing. Like you said, sometimes I feel like I'm waiting longer than I have to. But at the same time, the students need that opportunity to fix any syntax errors, indentation errors, name errors, all that. And so you have to be patient, even though you might not be getting through all the code that you want to that day. They're learning the skills that are necessary to debug and write their own code. So be generous with the pacing. I used to remember watching you teach. I was like, oh, my God, he only got through ten lines, or he typed a lot, but they learned a lot. And I did the same thing. I was like, oh, my gosh, I only got through five lines and through ten. What happened? So pacing is that and then technical issues. That's always a pain. Moo is not working, or I don't have my code from yesterday. Just make sure you have a backup. For example, I often will send them snippets and emails and have them switch to a cloud computing editor like replet, and just be ready to combat all those technical issues. Oh, your computer screen is not connecting to the blackboard. What am I going to do? That's an issue. Just being ready to adapt your curriculum in your assessment. You are constantly assessing anyways while you're live coding. So I think that learning process is enough of assessment. But if you have things that you have to get into your grade book. For example, we have to get x amount of grades and a quarter. Know that you can always just do a quick five minute class challenge right before live coding, and that will check the box. Here's, like, my grade for that live coding exercise. Sean Tibor: The other challenge I would add is the one I think that happens even before you start live coding, which is just having the bravery to go out and do it. It is scary, especially the first time that you're doing it. If you're switching from knowing all the answers before you present it to developing the answers as you're presenting the content, that can be a very scary hurdle to overcome for the educator. It requires bravery and confidence to get there. So take the leap, take the risk, make it happen, try it and experiment. What's the worst that can happen? It goes badly. Okay, so it went badly. Do it again. Try it again. Try to improve upon it, make it iterative. But that's absolutely a challenge, and it has to be acknowledged is that the emotional confidence to be able to do this and getting over your own fears of presenting something that you don't know what the exact outcome is going to be is something to be acknowledged, and it's not necessarily possible. In every school environment, you have to have a sense of security within your classroom that you can teach things and go off book a little bit to make it work. Kelly Schuster-Paredes: 100%. Anything else to add, though? We have covered live coding in 27 minutes. That was fun. Sean Tibor: I love it. Do more of it. Kelly Schuster-Paredes: I'm telling you that I used a really very generic website from Trinket, which had just links, and we did beautiful soup, and I felt that the kids were like, wow. Granted, I didn't pull and I didn't have to dive into, what is it, sister and parent tags. We just did simple, ordered lists. But it was such a fun activity. And my co teacher was like, oh, we're not doing a project on, you know, I wish we had time. I would have, but it's a 8th graders, so it was pretty cool. Sean Tibor: It's a lot of fun. Kelly Schuster-Paredes: Yeah. Sean Tibor: Any announcements this week, Kelly? Kelly Schuster-Paredes: We are calling for proposals, and people are asking for when the cut off is. We're saying, like, three weeks before the Ed summit, we really want to give the opportunity for people to get in their proposals. It's you and I and a couple of others looking at the proposals. So we just want a whole bunch, and we want more people to come, so we're not putting a hard date. Sean Tibor: I don't think we probably should. Everyone works better with deadlines, so we'll probably put something out, like middle of April. Kelly Schuster-Paredes: That's what I've been telling everybody. But if it's the last minute, just shoot an email. The Ed summit is Thursday, May 16, and we are talking about Python anywhere. Python everywhere. And don't forget the Pinecrest Innovation Institute, which is April 15 and 16th. It's just a fun little boutique conference that's hosted by my school. There's going to be a lot of fun. I'm excited because I'm flying drones in the library and I'm just waiting for the chaos. Sean Tibor: It's going to be great. Remember, wear eye protection. Kelly Schuster-Paredes: Yeah, exactly. Sean Tibor: All right, well, I think that does it for this week. So, again, this has been all about live coding and code alongs with Kelly and Sean, we've been talking about just a quick bite of how to use them, and we look forward to the next quick byte. We'll figure out what that's going to be and bring it to you shortly. So, for teaching Python, this is sean. Kelly Schuster-Paredes: And this is Kelly signing off.