Episode 54 Sean Tibor: [00:00:00] hello and welcome to teaching Python. This is episode 54. Making projects happen with Eric Mathis. My name's Sean Tibor. I'm a coder who teaches. Kelly Paredes: [00:00:23] And my name's Kelly Schuster Perez and I'm a teacher who codes. Sean Tibor: [00:00:26] And we're very excited this week to welcome back Eric Mathis. It's been about a year since had our last episode with you, Eric. It's great to have you on the show again. Eric Matthes: [00:00:34] thank you. It's nice to be back. Kelly Paredes: [00:00:35] it's almost exactly a year, to be honest, it was getting close to it. So it was pretty cool. Sean Tibor: [00:00:41] And I think we're coming up on the two year Mark of our anniversary with the podcast. So that's exciting to have, one of our favorite guests return and talk with us about projects this week. Eric, what have you been up to in the year or so? Since we last spoke. Eric Matthes: [00:00:55] Well this morning, I had looked at the date for our last conversation and I saw that it was a year ago. last fall was my first year not teaching in a long time. And so last fall was decompressing from five years of working two jobs. and so, yeah. After new year's this year, I started being a little more formal about the new work that I was doing, and I was just starting to get some good momentum and then lockdowns came and threw it all up in the air. so most of the last year, I think has been what most of us are doing, trying to balance life at home. we are homeschooling, with keeping up with enough work, to, have a professional life, Sean Tibor: [00:01:32] Yep. I think that's a very relatable at times like these, well, this week we're going to be talking about projects and project based, learning as it relates to pipeline. Dawn and computer science. And there's a lot of great benefits to doing projects with Python. But before we begin, we'd like to start in the same place we always do, which is the win of the week. And so Eric, because you're our guests, we're going to make you go first. What's your win this week, something good that's happened inside or outside of the classroom. Eric Matthes: [00:01:58] My win of the week. I like that you do this. Cause it made me think about something positive last night and this morning. so yesterday was Halloween and my son is nine years old and it's really hard to watch him. Go through this period because he's doing well. but he misses friends, misses, in-person school and school, the way it used to be and all that. but we had a really good Halloween. we spent at home, grandma sent a box of candy that you can't get in Alaska. we watched a scary movie and then we set up a tent in his room and I just did a slumber party with him. And so when we zipped up the tent at the end of the night, we were the only people in the world. It was really nice for one night. Kelly Paredes: [00:02:34] Oh, that's very sweet. it's always a hard time. I think my kids are, acclimating a little bit better than, I mean, I not saying your kids, Sean, or anyone else, but it's like anyone that they're hanging around with, they're the only ones always run it around with a mask on. I think they're very comfortable with their mask on tight. So it's a. It's always hard at these times, watching them having to go through this, but it was a good one. Sean Tibor: [00:02:57] we had something similar yesterday. we decided not to do trick or treating. And so it turned into basically an all day Halloween party at home with activities and games and all sorts of fun stuff. But I think the highlight for me last night was we set up a. Treasure hunt or a scavenger hunt for candy inside our house last night and equipped each of our kids with flashlights and told them to go find all the candy. And so I've got this great video of just like flashlights waving around the room and squeals of laughter and joy as they run around trying to find candies. So I think the silver lining to all of this is that we've gotten all a little bit more creative with the way that we. engage with our kids and help them find fun and joy and being a kid. And so it's really great to hear that you've had that, on the other side of the continent as well from us. Eric Matthes: [00:03:40] yes. Kelly Paredes: [00:03:41] Very cool. Well, since we're talking about COVID okay, I'll go next with my positive. So, cause I didn't have, and you'll probably hear it in my voice and I apologize for this podcast right away. But I didn't have very many days. Last week at school, I was out sick, waiting for my test results from, COVID, which is not a nice little test. I don't know if anyone has gotten one. It's not fun, but I got my results back today. That I'm negative. So now I get to worry about why I'm just sick. So it's always those fun things. Poor Sean. I was coughing a little bit at school. I was like, ah, ha. And I think he's happy to hear that I'm negative as well. So yay, Sean Tibor: [00:04:22] definitely a sigh of relief to know that the person you're sharing a classroom with seven or eight hours a day is not tested positive for COVID. So Kelly Paredes: [00:04:30] scary things that you have to be happy for these days. Bye. Hey. Sean Tibor: [00:04:35] Well, for me, it was a, it's actually the continuation of my hand sanitizer project. Cause I'm sure that Kelly is sick of this by now, I keep adding to it. I keep it. Iterating on it, adding little things. and now that I've got the basic part of it working, it's pretty fun to be able to add some new stuff to it. So the most recent thing I've added is a digital scoreboard, that I got from ADA fruit. So it's a, L E D matrix that I got. And I found some sample code in circuit Python that puts up a kind of classic scoreboard, team, a team B, and I modified it to show. Today's dispenses versus yesterdays and it turned out really cool. And I posted it on Twitter and it got some pretty good visibility, but the big win was actually watching the kids just engage with it. The fact that the scoreboard is right there and they can see where they're doing versus the day before. The usage has gone up. So we've had to refill the sanitizer again this week because they've drained it so quickly. And to me, that was a huge win. It's really doing what I hoped, which is to improve the sanitary conditions of my kids' hands that are coming through the classroom. So it's worked out pretty well. Kelly Paredes: [00:05:43] No, COVID Eric Matthes: [00:05:46] Have you had conversations about accidentally over optimizing the things that you measure? Sean Tibor: [00:05:50] Yeah. Yeah. I mean, I usually right after the kids are sitting there, like just putting your hand under it over and over again. Right, Eric Matthes: [00:05:58] fake matters. Kelly Paredes: [00:06:00] I think it was the Friday, like two weeks ago when he was saying, please, we just have to reach a hundred, everybody sanitized again. Sean Tibor: [00:06:09] Yeah. Well, the cool thing about it is it's logging everything to a, influx DB, which is like a real time database for, IOT type stuff. one of my next steps is to go through and actually do some analysis, work on it and look at how the dispenses are clustering and if they're happening during certain times of day, or if there's, strings with them going one right after another and just get a little bit more insight out of the data from it. So it's gonna be fun to go to the next level with it. but it's been a really great project for me. and it's increased my learning quite a bit. but it's also inspired quite a few students to learn a little bit more about how some of the things work around them, that they maybe have taken for granted. when they find out that I actually made it or I coded it, it makes them a lot more curious about what they could do with their own news programming skills. Eric Matthes: [00:06:56] Nice. Very nice. Sean Tibor: [00:06:57] we also would like to talk about the things that didn't go so well this week. So this is usually our opportunity to talk about the fail of the week. And I don't know, Kelly, if you want to go first or if you'd like me to go first, it's up to you. Kelly Paredes: [00:07:08] No, I'll go first. After Allie's episode I started getting back into this project that I had talked to you guys about a year ago, Eric and I didn't get very far. So I feel like it's a little bit of a failure in a year failure. But every time I start to open up the project, I get sucked into something else that I'm reading. I got sucked into the Django tutorial, which was fun. I got sucked into , Beeware , which was fun. And then I opened up, Al Sweigert new book, which I read. So I'm not very good at doing my projects, but I'm really good at doing other projects. it's a big fail. so I'm going to take that as the fail of the year of not getting my project done. So maybe this will inspire me to keep working on my project. So we'll say there's my fail. Sean Tibor: [00:07:58] Yeah, I've definitely had that happen myself at that productive procrastination where you're like, Oh, I don't know how to do this thing. So I'm going to go do something else. That's also valuable and useful. And then it makes it harder to return to the project. Kelly Paredes: [00:08:09] I got some really good research. I found some really cool things about what I want to collect as data. As soon as I get my dashboard made. Sean Tibor: [00:08:16] Yep. Eric, how about you? any particular fail this week that you want to call out? Eric Matthes: [00:08:22] Well, I appreciate you including fails as well, because I think most of us fail more often than we succeed, and that tends to be less visible, to be serious for a moment in 2015, we had a landslide in town that killed three people in our community. so shortly after that I started a project. That monitors, one of the local rivers and tries to help predict when land size might happen and also when they might not happen. and that project has been running for awhile and the goal is to make it public within the next year. But there's a small group of us who are watching it during heavy rain events right now, and tuning it so that it can be meaningful to the public. and this weekend we are right in the middle of two really heavy storms. and we might get some near record rainfall tonight. but last night was interesting to watch this project because I did not code it correctly for managing the transition between, daylight savings and standard time. So looking at the, the chart this morning, there's a Sawtooth shape in the middle of the river curve. That should be smooth. and I was grateful. Yeah, it's a fail because I didn't handle, time-zones correctly. but it's a win because it didn't happen during a critical time. Kelly Paredes: [00:09:36] Oh, Sean apparently told me that the new Python has the fix for that, right. The time zones. Sean Tibor: [00:09:42] What has the, all the time zone definition are now part of the standard library in Python three nine. So you don't have to bring it in date you tell or PI TZ two to get a. was it that I a S a standard or something like that are ina standard, time zones into your code now. So maybe that's something that could help. Eric Matthes: [00:10:03] It will be easier, but data is messy and I lifted the data file and it includes two tier readings for each timestamp during that transition time. Kelly Paredes: [00:10:12] Oh no. Oh Sean Tibor: [00:10:13] might be a bit tricky to untangle. Eric Matthes: [00:10:16] Yeah. Sean Tibor: [00:10:16] for me, the fail this week is, I'm working on a website and, trying to handle encryption on the database. So I have, a set of data that's coming in that needs to be. reasonably secure or protected. And we've been using this, it's a WordPress site. We've been using this WordPress plugin for the last five or six years. And it turns out that the maintainer of the plugin has decided to no longer support it. So there's some major breaking changes in there and I'm trying to figure it out, just failing. It's really not working well. I think I've almost got there, but it's way deeper into, the encryption. set up and configuration and managing all the details of it, then I'd like to get into, but I will get it figured out. It's just a matter of time and pressure. And once I apply both of those, I'll have it figured out. Kelly Paredes: [00:11:04] that's the big thing, right? Finding the time, finding the pressure to get it going, but you'll do it. I'm sure we have faith in you. Sean Tibor: [00:11:13] Well, so this week we're going to talk about projects. Let's jump right into the main topic. we use projects in the classroom a lot. Eric, you've been a big proponent of projects for computer science education for quite some time. and as you can tell from, the things that you've done in the community, you're also a big believer in projects, yourself, as ways to make things happen and to learn and grow. so this week we're going to start just by talking about some of those benefits? Why would you want to have projects as part of your curriculum in a computer science class and Kelly, I'll turn this over to you to start, and maybe you and Eric can lead it off with the, cause some of the reasoning and the why's and how's of getting projects off the ground. Kelly Paredes: [00:11:51] sure. Well, I'll start it and then I'll let the expert continue on it. I think, and we'll just take PBL out. We'll just going to put PBL in a little bit of a side, because there's a little bit of a difference between a projects and designing a curriculum with project based learning. so with that terminology where the PBLs come from, we're just going to put that and chunk it. And so we don't offend any of the PBL people. We do PBL. We do project based learning, Sean and I'm sure Eric's done a lot of it, but I think, I don't know if I heard it from you, Eric, but programming with purpose was like this thing that I thought, Oh, that's much better than just saying we do PBL. So we program and we do things and we design our lessons for a purpose. and that's like a philosophy that we go with it and you want to. Jump in on that for a little bit. I'm just going to lead you in to make you talk the whole time. Eric Matthes: [00:12:45] Sure. I bounce back and forth between perspectives of being a teacher, being a learner, being a student in a formal setting, like a school and being an independent learner and just being a person who was trying to build projects. So I'll jump into this from the teaching perspective first, because I think it's one of the places I can articulate it most clearly. I spent a long time as a math teacher and as a science teacher. And one of the reasons I went into teaching originally is because of how many people hate math and hate science. when I was in college, I was studying physics and I loved it. I went to physics because I wanted to understand how the universe works. And I naively there's this story where one night I was looking up at the stars with a friend and we were just marveling at how beautiful it was and fascinating, and this and that. And for a moment I naively thought wow, if I study physics long enough, this might get boring. and as I learned more, I found that it was even more fascinating for understanding what we can and still seeing how much we can't understand it. so I would approach math and science with that kind of fascination. But most of the people I talked to during my university days hated math and science and they hated it. mostly because of how it was presented in ways that didn't make sense or ended up acting as a gatekeeping. for example, people who never wanted to do anything with calculus, but it was requirement for their core requirements for the major they were in. And it just got in the way. so. I went into teaching, to try to take down some of those obstacles. So years later, when I was a math and science teacher, I had always had this perspective that, okay, I'm a math teacher, but my students are not mathematicians. And I'm a math teacher, but my students are not going to be mathematicians. Maybe two or three of them are. so I'll speak to them respectfully as people who become mathematicians, but I'm not going to build my whole class around this idea that everybody's going to be a mathematician. And I think that's true as science as well. in a science class, maybe you have a few more students who are going to be some form of professional scientists, but most people are just going to be random everyday. People who want to be able to make sense of science in their life. And so when we decide what to do with students, projects are a really good way to give purpose to whatever we are learning. And I mentioned math and science first, because those are classes where people can pretty clearly say yes, I've had some experiences where a teacher. Try to make me learn some things well, any relevance to the real world. And it was frustrating and maybe I set up for failure. And so I think projects are a way to push everybody to find some meaning in the learning that they're doing. Kelly Paredes: [00:15:27] absolutely. And I was thinking, I don't know if you guys have read the book drive by Daniel pink. He Eric Matthes: [00:15:34] I have not. Kelly Paredes: [00:15:35] it's a great book. You gotta read it. he says most people are intrinsically motivated by purpose. By having charge of their learning and by finally mastering things. going in line with what you say, you're not going to be mathematicians. They're not going to be scientists, but at the same time, they want to master a problem that they've been given. Most people who are intrinsically motivated by, computer science or something, they may not want to code in the future, but they do want to solve that problem. They do want to make that tiny little app and there's that mastery of completing it. So it's a great book and it got me thinking about it when you were explaining it that you've got to tap into what that intrinsic motivation is for them. What drives them? Because they might not want to be the scientist or mathematicians or computer scientists of the future, but they all have a purpose and a drive for problem solving. So Eric Matthes: [00:16:29] Right. I started with, talking about math because I think it's easier to relate to. And so when I was thinking about what I would do as students in math, I would look for what does this person want to understand better? I want to understand how to manage my own finances when they understand how to run a business, understand how to do my taxes, understand how to, Make sense of data around the controversial topic. And so I think with, programming, it's even more enjoyable because there are so many different kinds of projects that we can help students get into. And there's, so many different ways we can go about those projects. Sean Tibor: [00:17:02] Yeah, I would agree. the projects in computer science that I've seen have really been that intersection or the dance between the abstract and the practical, they intertwined in such an interesting way and they each enhance the other, right? My practical knowledge enhances my ability to make abstractions and the bringing the abstractions into the practical world enhances their value to me. So when we look at. Projects and computer science is the way to really bring it to life for a student. Bring it to an, a really interesting place where they can say, okay, this is useful, and this is valuable. And at least with what we've seen, I think it's very similar to what you were talking about with mathematicians and scientists. Not all of our students are going to become full-time software developers or pursue a computer science education. But if we have them. Understand the possible uses of the knowledge that they're gaining, and the practical knowledge of how to apply it in an interesting and useful way. Then our chances of having them reuse it or want to continue learning in the future about how these could be used would go way up. and honestly, it makes it more fun for me as a teacher too. It's much more fun for me to have that daily challenge of new application and new ways of explaining things in the context of a student's project than it is for me to take the same Google slides document and go through it, four times a year and, drone on about short-circuiting logical expressions and without any sort of, sense of why that's cool. Kelly Paredes: [00:18:36] I'll put the benefits of the children aside, and I will second that. With I get so bored of reading and correcting the same code that I always challenge them and say, I don't want here's my code. Make it something different because for me, having taught. Six and seventh grade now, 24 times in the past two and a half years, the same course. I think I would go crazy if we didn't have, our projects, because I learned so much more from the students and they challenge me personally on having to learn other things in Python. How do you do this? I want to do this. And I'm like, Oh, I don't know. Let's go figure that out. So it is fun when they're in charge of. Their own project ideas. Eric Matthes: [00:19:23] in this part of the conversation about why we do projects, it's good to ask what happens if you don't do projects as well. as a teacher, I've always welcomed, the question, why are we learning this? that question comes up most often in situations where we are not providing a meaningful context. so if you don't have projects at all and I'll keep the focus on. computer science classrooms now, if we don't have projects, then all we're doing is teaching a bunch of syntax and a bunch of, mostly abstract concepts from computer science. And you can do that for a little bit. But at some point, you're going to get more and more questions of why are we learning this? And a project is basically, if you can agree on a meaningful project with students, that gets purpose for everything, everything from that point forward, can relate back to that project. It doesn't have to. Yeah, but it always can. Sean Tibor: [00:20:13] And I also think it gives us a lot of shared context, right. Especially if we work on something that, it's the same problem, but many different solutions, So if you structure a project that way, and everyone has different solutions that they're creating as part of their approach, It gives you the touch point and the rest of your course with those students to be able to say, okay, do you remember when we did this? Or do you remember when we tried to solve that and you did it this way and you did this way, and we talked about the different ways they get that in a very relevant way that they wouldn't get, if it was just a problem set. Right. Or if it was like, there was one right answer when there are multiple solutions and each of them had a hand in coming up with their own solution and seeing everyone else's, it becomes a much more engaging and interesting exercise for them and much more valuable in the longterm for the rest of the class. Kelly Paredes: [00:21:04] And then it also just allows them to. For me, it's like that Y comes from this, the skill development for the future. this, we give them this chunk of time in our classes. And I think sometimes when we talk about this at school, people are like, well, what are you doing for the day? And we're doing the demonstration of learning project. Well, how are you structuring that learning? And I'm like, I'm not, they're there. They're doing what they want. and they get to develop these other skills for future classes, future, high school, future selves of, perseverance. Having this self confidence to, tackle something that their teacher has an assigned or, just this ability to focus on a goal. So it's it's a neat thing. Eric Matthes: [00:21:55] I've thought recently that I was going to stop listening to this podcast because I stopped, classroom teaching at that I'll listen to the more Python focused, coding focused podcasts. but I have listened to every episode because it's always so interesting, from all the perspectives that you bring. and I think I'm probably not alone among listeners who cheer at certain points during your episodes. I typically listen to while I'm washing dishes and. My kid will come back later and say, what were you cheering about? Oh, Kelly said something great. one of the things I cheered about recently was when you were talking about something, say making a card game, say kids are making go fish. and some kids will do it by making lists that represent, a deck of cards and maybe their cards are just strings two of hearts and maybe somebody else uses a dictionary. And so. and somebody else will use classes to represent those cards. And so one of the nice things about projects is you can separate what happens for people who use the project from what it looks like for people who are building the projects. And so. You can have two students or two groups of students who build a go fish game that works and they can present it to non programming students. And the game looks identical to both to those students. but on the backend, it's entirely different code. and I think that's really good. what made me cheer was when you said students can keep using lists as long as they want. All right. And. They need to see what other students are doing. They need to see what a class looks like. They need to see what this implementation would look like with the dictionary. but one of the things that matters most is can you make sense of what you're learning? and honestly, sorry to keep going back to math. but one of the best ways I've found to introduce people to algebra was to take students who are comfortable with the guests and check method. Show them the algebra is basically an automated guessing check. algorithm and then give them a whole bunch of problems that can be solved with guessing check and see that the students who are starting to use algebra are getting through them more quickly and more elegantly. And eventually the people who are comfortable with the guests in check will start playing with the algebra, seeing that it works and then making it their own, Kelly Paredes: [00:24:02] but that's like that's like that thing though, everyone says, Oh, you have to teach critical thinking skills. And I don't think really many people. Realize how to do just that we say, Oh, we're giving them problems. And we're teaching them critical thinking skills, but we're not really teaching them critical thinking skills, but doing these guests and checks, showing how this other person solves a problem, showing how someone attacks one problem. One way, like shot. For example, I take this in point. my project, my data collection project. Shawn was like, Oh, but you could do it this way. And he's you have five different ways of getting the Excel sheet. I'm like, I know because I don't know which one to do. And I think when he saw it, he was like, Oh, wow, where do we go with her? Because here I'm like, well, you can insert, you can click on this button and upload it to my co-lab sheet. And I think that made him think things a little bit different. Probably definitely helped me. Cause he's used to me, not by now, but seeing that I tackled this problem. All the wrong ways, but it makes him see, I guess how I'm thinking. And it's just neat that being able to model it and let the kids, Model learning for other students helps them to teach the other students how to think critically, how to analyze or get relevant information or, see the common mistakes that each person has. And it's, that's the nice thing about, projects. Sean Tibor: [00:25:27] it's also interesting too, because I think one of the things that I appreciate the most about this. multiple ways of viewing a problem or multiple ways of solving a problem. if we're doing it right, the students will be able to describe why they made the choice that they did. This gives them choices in how they solve problems. They have a way to say I'm going to do it this way. Well , why would you like to do it that way? what's your reasoning and it's not supposed to make them defensive. It's supposed to get them to explain their thought process and explain what options they considered, why they chose this one. They're making design choices in the way that they approach a problem and that critical thinking of why am I going to do it this way? Is fascinating to me and that never gets old to watch them do it. You can do it with something as simple as how do you concatenate strings together? which approach do you want to do? Do you want to do a bunch of plus signs? Do you want to do dot format? Do you want to use an F string and just talking to them about, well, like why did you choose this approach and why do you like that? And w the way they describe it is always fascinating so they have this thing in their mind about, I can make something happen. I can make choices about where it goes. And I've always found that to be really interesting, both as a developer and as a teacher. So when you and I were having that conversation about different ways that you could get the data into your program, it wasn't so much a conversation about right ways and wrong ways. It was. Given what you're trying to do, what ways do we have available to us and which one should we choose to get you to your goal? And then maybe someday your needs will change or the problem will change a little bit and you'll choose something totally different. And that's also really fascinating. Kelly Paredes: [00:27:12] Yeah. And that's where we talk about students, but as an adult doing a project, if our listeners are out there and they're saying as a teacher or as a, future developer or whatever these projects are really cool. And having that mentor, that person to challenge. Challenge and a night and an acceptable, I didn't say you're were me in a bad way, but it really, it makes me stop and go. I was like, I don't know. I, there I go. I've got sucked down another research hole. Why am I going to do this? Am I taking this from a CSV? Or am I going to just upload it into Google drive? And it's really cool. It got me Eric Matthes: [00:27:49] me Kelly Paredes: [00:27:49] motivated again, it was like this. I got to do this purpose of trying to figure out which way I'm going to get my data. So. And that thing that's happens with kids. I'm like, well, what do you want to do? How do you want to see this? And, questioning like Sean says, it's pretty cool. I don't know. Projects are awesome. Eric Matthes: [00:28:06] Yes, they are. Sean Tibor: [00:28:08] and I think my favorite thing is at the end, watching them present their ideas, . Even if it's a two week project and it still has a lot of gaps in it and everything, the level of pride that you see in students when they're presenting their idea or the thing that they came up with that no one else came up with a solution they did. they might be the only person in the world who's ever solved a problem in exactly that way. And so it's something to be genuinely and authentically proud of. It is a pretty cool thing to see them present their idea for how they can make Alexa remind them of what they need to bring to school every day so that their mom doesn't have to, or how to, make it so that when the door opens to the classroom, it brings up a video of the Mandalorian on YouTube. Well, because we've seen Kelly Paredes: [00:28:53] don't even start with Amanda. Lorian one episode a week, but they come in with a confidence. Sean Tibor: [00:29:01] yeah, and they come in and they say look at this cool thing that I made. And then you watch the other students also get excited about it. And then they start asking questions and it becomes this explosion of conversation and learning and curiosity that is really quite rewarding to see. Kelly Paredes: [00:29:19] Yeah. And they become like these experts. I mean, let's take my sixth graders demonstration of learning. It was really cool. I gave him the option this time we changed it up. I don't know. I make things up as I go sometimes I feel, but I gave them the option of doing a Python turtle, project, where they had to learn more about turtle. Cause I didn't have enough time to cover it. Except for basic stuff or micro beds, or just a Python three, whatever you wanted. the kids that went with turtle, we're finding out how to put images in there and somebody had found. a click and trace model where they put an image in the background, and we're able to find all the exact locations within this image. And then we're able to trace and draw their turtle shape around. what's his name? Nirvana guy that died. Yes, Kurt Cobain. I'm like, really? Do you, how do you know Kurt conveying? You're like a steer, 10 years old and I'm like, okay. But yeah, so it was pretty cool, but then they started someone else saw that he did that and he started becoming the expert. So this shy little kid sitting in the corner was going around well behind plexiglass and showing the kids how to do this as well. So it was pretty cool. It built this confidence in them. Sean Tibor: [00:30:30] So let's talk a little bit about project ideas. what make good projects for computer science? How do you get kids going and get them excited? the last thing we want to do is put a prompt or a project charter out in front of everyone and have them walk at you blankly. And say what do you mean? So how do we start? Or what projects have worked well, what project prompts, ideas for projects? What can we give the teachers that are listening? And maybe some of the casual instructors listening, the ones who do it informally to, to give them some ideas about what they could get students excited about with their projects. Kelly Paredes: [00:31:04] We're going to put you on the spot, Eric, we're going to let you go first. Eric Matthes: [00:31:08] so yeah, I think, that's a great question to ask. my book, I think stood out, I think Python crash course stood out, because there've been lots of introductory books and there's been a lot of project focused books. But there haven't been a whole lot of books, that take you from knowing very little or knowing nothing about programming to doing meaningful projects, all one together. at least not seven years ago. Now when I started writing that, so that book came out of. A large piece of blank newsprint that was on my wall where I had taken notes from this same discussion with students. So I was teaching an intro CS class, a one semester class in high school with students who are not intending to become programmers. And so we had a conversation early on about how. The only real way for you to make any meaning out of all, this is to have some project in mind that you're going to apply whatever we learn to. And I need to know what that product is early, so that I can shape what I'm presenting to be able to support you in the project. And you need it in mind early so that you can be thinking about the concepts that we are covering as they apply to your specific project. And so at that time, the products broke down into three categories and they were games. there's always a group of people, who want to make games. And I say people because it's easy to say students, but if you grab any 10 or 20 people off the street and say, Hey, if you could have magic programming powers, what would you build? A, I think you'd get the same kind of spread of ideas. So there's always people interested in games. I have always found students in judges and data. And I think that surprises some people because they think it's dry or they think it's too math focused for kids. but there is so much data available about so many different things. and it really helps you make your own sense of a situation to be able to collect, process and present. the data that you're interested in. And then, the last major category that I see is, apps. And so that could be a straight web app, or it could B huh. App for a platform like an iPad or iPhone or Android. I think there's also this other categories like robotics. and I have not spent as much time in hardware, so I get always get intimidated by those projects. But I think within those categories, if you can start to name those categories, then you can start to, I have, conversations with people that steer them towards a more specific project, which of these are most intriguing to you? if you could have magic programming powers, what would you tend to build? I think good things come out of that. Sean Tibor: [00:33:42] The other thing that I would add two is that I see students get really excited about things that save them time or that automate stuff that they don't like doing. so if. If you have games on one side of the spectrum, which is, these are things that I like to do. I'm entertained by these. These are fun. And I love spending time with them on the other end of that spectrum is here's all the stuff that I hate doing, and I don't want to do any more of it. How can you help me do less of that? And I see a lot of interest in that as well. Once students start to realize how much of what they do can be automated. Eric Matthes: [00:34:13] yes. Very good. Sean Tibor: [00:34:15] let's just go through some examples in each of those categories, games that we've seen, made apps that have been made time, savers, data projects, things that give our listeners an idea of what's possible, especially in those introductory courses where maybe the skills aren't as developed as someone who has been coding for a long time, but can still be really useful and meaningful projects. Eric Matthes: [00:34:38] Yeah. I think if it's all right with you, I'd like to share my vision for how a project evolves. As we answered that because I think having this in mind helps us think through those, the kinds of projects. so I always start with a project specification. our spec and that is a clear statement of what the product is going to be or include and what it's not going to include. And that's the only ideas of scoping. can we, so for any candidate project, can we scope this to something that is meaningful and can be done in the time we have with the resources we have? I also like, along with that, an elevator pitch is what I've heard it called. And that comes from the idea of if you're looking for people to fund your project, if you were in an elevator with somebody who had all the money in the world, could you describe your projects in a compelling way in one in the time it takes for one elevator ride? the idea there is, if you can, then you probably understand your project pretty well and you can help other people understand your product. And if you cannot describe your project concisely in. 30 to 90 seconds, then you probably don't understand your product well enough to start building it. after that comes an implementation plan, and this could be a bulleted list of what are the milestones for? the stages for your project. All right. If you were going to build this project, can you identify the steps where you would be building towards a full implementation of that project? at that point I can't read my writing, but I think it was something about, writing code. So this is where you actually start to write code. and then you need people to use it. And so that, needs to happen at some point. and I've co put presentation with that. and this goes for students and it goes for people working alone in their house. even if you're doing a solo, COVID project, you need to present your work to somebody, if you want to fully understand your own project. and that can be. A presentation to non-technical people where you're focusing on the outcomes of your project, and it can be a presentation to other people either more or less knowledgeable than you are self about, programming to show how you built it. what kind of decisions you made along the way and what's working well, what's not. And the last piece of reflection. All right. So now the project is concluded. Whether it worked or not, because I think we do need to give space for saying, if a project fails, if it doesn't do what you set out to do, is there a possibility that you have completed the project? I've done thousands of products. If I look back, I started listing. The projects that I could talk about today, I was like, wow, it really is way more than I could ever talk about in a day. and that's because there were so many projects that I started. Got to a point they didn't fully work, but I had learned as much as I needed to from that project. And it was totally appropriate to move on and probably healthier to move on to the next thing that I cared about than to, continue that specific project. I think it's important to not abandon every project that we start. Cause you can get into bad patterns that way. projects do get to a point where it's less fun and more work to bring them to completion. But we also can't finish every single product. We start. So some form of reflection where we identify, how did it go? What went well, what would we do different if we were going to take this further and then finally, what next? So are we sticking with this project? We're taking it farther. Are we learning more fundamentals? So they're better prepared for the next project or are we moving onto a different project? So I think when we talk about the ideas for what we can take on for a project. Having that kind of flow and process in mind is really helpful for saying is this a good candidate for the current project? Sean Tibor: [00:38:27] And I think to add to that the, I always think of projects as being iterative, right. That, that if I had more time, it doesn't mean that the phases of this project will be longer or that I'll spend more time on them. It means that I will probably go through more iterations of that cycle. so by default, we try to position all of our projects with students as being iterative. You are making versions here or version one of your idea, whatever that is. and. If we don't have enough time, it means you'll get to go through one iteration of that. But with more time you could do as many iterations as makes sense. And then to your point also of when does it make sense to let a project continue versus to what it rest, where it is? I think you can also help students learn about what are good exit criteria for our project. what's a good point to say, I'm. Going to not work on this anymore. It's maybe because it's not valuable or because I've completed all my goals or it turns out that what I thought was going to be important, isn't important at all. And a completely different project would make more sense. Kelly Paredes: [00:39:28] And I think I add to this because I kept thinking before, when I taught design technology, design technology was a whole year and we went through. Eight to nine week units. And, we did the scoping, we did the rapid brainstorming. We did the designs, we did the elevator pitch, the implementation, et cetera. And I kept thinking the one thing that we're missing and telling everyone is time. So depending on how much time everybody has. A full year, say you're a teacher, a full year course or a nine week course. You might be making those scopes and elevator pitch into more like sprints. Where we're having two, three day sprints where we're scoping, where we're taking a pitch, we're writing out some possible code selections. We're doing a lot of trial where we're going through it faster. Like Sean says iterating it, or whether we have a longer project that can take a span of eight to nine weeks or a year or plus time and go through those stages in more depth and more iteration, but still. Always putting that time in a factor of what you're going to do and how quick you're going to iterate. I just kept thinking design technology and all those 22 page, design proposals. I always have. That's great. I'm so glad now it's 200 plus lines of code, but Hey. Sean Tibor: [00:40:53] Yeah. And I think the other thing that. Came to mind, as you were describing your project approach, Eric is that this can be scoped or scaled. Appropriately to the student, to the grade level, and I think if you're maybe skeptical of that claim and think, well, project management is a discipline. There's a whole Institute out there and there's, documentation and people spend their whole careers working on project management. That's also true for science, right? So we have scientists who spend their entire careers. Designing experiments and creating an approach for validating methods and validating data and things like that. But we also teach it to kindergartners about the scientific method. We also teach them about having a hypothesis and making a, designing an experiment to test that hypothesis. So if we can distill a scientific method down to a level that's appropriate for. elementary aged students, we should absolutely be able to distill a project management approach down to something that's appropriate for a fifth grader or a sixth grader in a way that they can feel, in control of that they know what's expected of themselves and for their project. And it helps them actually get a better outcome when it's all over. Kelly Paredes: [00:42:07] Yeah. And I'm just going to throw out that educational, word that everyone's now talking about is the, not really now, but it's been around for about five to 10 years. Is this agile learning? Then methods of roadwork. And I know that Sean was saying, that's something that you did in the business, but now it's going into the educational that scrum the sprints, the projects, it was PBL a lot. Now PBL is also taking on the agile learning. So all these process of alternating incrementally through the project, there's your educational mumbo-jumbo for me. Sean Tibor: [00:42:43] so, so what's take a Mike in a given project idea and what let's walk through, what that would look like in this structure that you've described Eric, so do you have a good example of a project that you've gone through with this process? Eric Matthes: [00:42:58] I'm not sure I have failed doing projects with students. Way more than I've succeeded. it's been nice to do a book, this self-contained and, the people who write to me tend to be the ones who have made it all the way through. I think it's important to say that out loud because, I think particularly with teachers, product, project based learning, particularly in this area can be really hard. One of the things about programming is that students, all right, I'll take a step back. I read something a while back about why students, why young people middle-school age. High school age get so into things like Lord of the rings, Dungeons, dragons, any number of things, kids, if they, our hope is that they are having most of their needs met for them. and so that time, what, eight, 10 years old to 15, 16, 18 years old, can be a time where people. Have all the time in the world to do whatever they want. And so if they like Lord of the rings, they can read the entire series. They can read all the fan fiction, they can watch all the movies, they can write their own fan fiction. if you apply that to programming, people who start to learn programming at that age and get into a product, they can put a thousand hours into the project if they want. so as teachers. That can make projects go really well and it can make them really hard to manage. So I appreciate Kelly bringing into the conversation that just the role of time in the way that you do. so I think a good, way to look at this is to say, okay, how does this structure we've been discussing, apply to students with the most limited programming skills? And how does it also apply to students the most ambitious students in a class. And so consider games, one of the best ways to identify a project, if you don't already have one that you want to do is looking at imitation. what's already out there that I could try to recreate, and gain a better understanding of how people build these things. So go fish is one of the simplest games, even simpler, I guess it's like a number guessing game. we'll play with go fish for a minute because it's, it can be done at different levels. So you can write some form of go fish with probably just an understanding of variables, lists, hand input. might help to be able to do dictionaries, and certainly some, conditional, work if statements. but with that, you can build a very small, small scope, go fish game. And so how far can you take that? You could build a web app that allows anybody in the world to play, go fish, and you could build an app that allows people to play, go fish against each other or against a computer. and I think the structure that we've been talking about would help both the person who is trying to do that product scope of their own product in a way that's going to set them up for success. And if it's a student who doesn't understand this process, all that well. We can use this process to help them scope it and build it in a way that works. Kelly Paredes: [00:46:01] Thinking back while you're saying that. So Sean, and I guess we have to set the stage for people as well going, I was tying into the fact of the failure and sometimes projects don't always succeed and some students are more into coding and we'll study a lot or just keep coding and they come into the school and they're like I've coded X amount of lines and look what I've made. And I'm just like, dude, you're out of control. Okay. What am I going to give you next? But. I guess the set the stage is Sean and I, for example, when we get into mind, we don't just say to the kids, Hey, go do a project. And I think a lot of people let me know. I'm like at the end we do at the end, but not at the beginning of the quarter. And I think that, I was just thinking about when people are listening to us right now, we set the stage like you, where we'll say for the seventh graders, show them how to do rock paper scissors. We'll show them how to get a random number we'll go through and an idea. And we're like, Okay. So now you have these, this, these type of games. What can you make and what do you want to make? And now that we've shown you this type of hardware, or now that we've shown you, this chunk of information, we make it a little bit. More tangible because of the time constraints. Does that make sense? So I just want to set the stage to people and say, listen, yeah, we do go and say, what are you going to make? And open it up and say, go get creative. But we do set, like you said, with some basics and some concepts that will help structure them into their projects. I just wanted to clarify that because I was starting to think about. Sean Tibor: [00:47:29] And the examples throughout the course, right before we get to their actual project, we also structure those projects where we set out. Here's the goal of what we're going to try to make. Here's our general plan for what we're going to start with. this past week I was going through and laying out features for, Rock paper scissors, right? Here's what we're going to do in version one. we're going to then think about a bunch of different ideas and then we work together to categorize those into this would make a lot of sense for version two. These are things for version three, and this is stuff for, later someday, maybe. The students start to get practice with some of these concepts of the project that they're going to create for their themselves in more of a shared setting where we can discuss each of the different, approaches as we go. Kelly Paredes: [00:48:13] Yeah. And that's where I got triggered with the go fish. I'm actually going to try goldfish this quarter. I think now thank you. I believe we did it. I did. Some students did it on their own, but we always do blackjack. And then my, our principal always comes in and say really blackjack. And Sean's yeah. Sean Tibor: [00:48:32] That's math and Kelly Paredes: [00:48:33] Math and probably why wouldn't you, but go fish sounds so much sweeter, so, Sean Tibor: [00:48:39] Yeah. And unfortunately we will not be able to create a ring of, go fish, sharks at Vegas anytime soon. So. Kelly Paredes: [00:48:47] well, it goes along actually I'm goes along with my book that I'm still reading that, the biggest bluff. So maybe I'll find a way to do Texas hold 'em. Yeah, I'm sorry. I digress. Go on. Sean Tibor: [00:48:59] the go fish example fits nicely with all of this, there's a lot of different ways that you can solve it. You can structure it in different ways. You can make it very iterative where there's a lot of, advanced features and functionality that you can create. If you want to, and you can also stretch it in the other direction. So the things that you learned from making your first go fish game could be turned into other projects quite nicely, right? Being able to use those underlying computer science concepts to create other types of games or to organize and sort information as needed is also really valuable for students. So they can continue to scale their project upward. Into, more go fish or they can scale outward into other games, other types of projects that they may be interested in. Kelly Paredes: [00:49:44] Yeah. It's like that power of imitation thing they see someone else's code, they see some other ways of doing stuff. And I'm thinking with ten-year-olds, my sixth graders, I do a ice cream social app. And I say, we're going to make this app. That's going to invite people. And I've told this story thousands of times, but the stuff that comes back to me, cause I tell them, I don't want to see an ice cream social. I'm making this in class. I'm going to do the first couple versions. I'm going to show you how to upend the list or, go through a couple of four loops and we're talking basic concepts. And I had, Kids making which way, novels and Madlibs and all this other stuff, because it's got them hooked. and my 26 line code of my ice cream social app turned into some crazy story that they decided to make three or four, or I had another student make, a quiz. app for five different subjects of her. So I thought that power of imitation being able to replicate someone else's code, but make it your own is a good way of how and what projects can happen. Eric Matthes: [00:50:50] yes. Kelly Paredes: [00:50:50] Sorry. Yes. Eric Matthes: [00:50:52] There's a lot of nodding, a lot of nodding in these conversations. Sean Tibor: [00:50:55] the other approach that we've also taken is not just the imitation, we've also done the here's a problem space, here's a set of problems that we're going to look at or some area, and then let's design some solutions for that. So it may be, if you look around the school, what are some problems that you and your fellow students are facing and how can we solve some of them? So giving them a more narrowly focused. Problem domain. . And then see what solutions they come up with out of that. And that works, fairly well when we have a little bit more time, for them to do that investigation and research. And the other thing that works well in there is giving them the flexibility to explore several different problems based on this. Approach of examining a problem, trying to develop a solution, assessing whether they have the skills and the knowledge to be able to tackle it with the time that they have. And if any of those fall short to go back and find another problem that they can solve. And so this, it becomes almost a circular. Movement until they find something that they feel as solvable and then can go forward on it. that's worked well for us as long as we don't let them cycle back too much to try to create new, solutions as they go. Eric Matthes: [00:52:08] Yeah, within the school context, another huge area is to have conversations with the other subject area teachers, because how do we really embed CS education in school? and my vision. How do you know, CS is embedded in a school. If you walk in and see students using their CS skills and knowledge to do projects in their non CS classes. And so I imagine like a student, building their own study tool for a foreign language, a student trying to build their own, translation tool in a foreign language class. Kelly Paredes: [00:52:44] And thank you for that, by the way. I did use that last quarter. That translation, sorry. Eric Matthes: [00:52:50] it's great. You learn so much by trying to do that and if they make some of their own homework easier. Great. they're probably going to dig into those topics deeper and learn more about that subject area, by automating them to straightforward parts in and digging into the nuance, for social studies, writing code that generates a timeline. when you talk about like data analysis and data presentation, students who can work with raw data sets can really dig into, important social studies concepts, the applications in science or. Are way longer than an hour conversation. but for people who are embedded in schools, if you really want your, CS program to become entrenched in your school finding projects that allow students to spend some of their non CS time using what they're learning, is going to be, is going to pay off in large ways. Kelly Paredes: [00:53:38] here. I felt, I hear will Richardson. He, I don't know if you guys know who will Richardson is, he's the one that's always about rethink education. I can hear him saying, Magine that where we're in there doing? Topics or subject areas that are flattened and no walls kind of thing. We were actually. Solving problems and using math and English and computer science to do a science project or to do a history project. I can't believe we're still in this century. Sorry. We're going to digress and would go on a pedagogical, a rant, but I can't believe we're still in this century where we're still in only learning English or only learning math. I would love to be in a place where we can solve real problems With code or with math and with science, that would be cool. Sean Tibor: [00:54:27] Yourself is what demonstrates a student's understanding of a. Knowledge or demonstrates understanding of a concept. Is it their ability to solve a hundred math problems in a row perfectly? Or is it their ability to write code that solves a million of them accurately? so one demonstrates their ability to perform rote tasks and the other one demonstrates their ability to take the concepts and break them into solvable chunks and accurately combine them back together to give the answer. so we did that this week with physics class and we talked about the problems that they were doing and they're examining, force and, or actually they were calculating speed. So they had something where they were trying to calculate speed, from distance and time. And they were given all these different units of measure. And so we broke that down into your speed. Calculation is pretty simple, that's, it's basically just, just division, but. Getting all the units of measure can be very tricky. So how could we use functions to be able to create and translate between different units of measure and once they saw how it could be broken down into these really simple functions and then recombined, you could see them just lighting up. They're like, Oh wait. So I could check all my answers for a physics class. I could plug in my information and then combine it to be able to get the right answers and make it work. They got really excited about that. Kelly Paredes: [00:55:51] Yeah. And you just hit a benefit that we forgot to mention about problems. Is that doing these projects or whatever? Have this long-term retention. They're going to remember speed. Not because they calculated 500 problems in physics class, but they're going to remember how to calculate speed because they solved it, doing a project, doing an activity. And that was a short project. Mind you, but it was still something that allows them to develop this long-term retention of these concepts that are so abstract, here's speed here's functions, and we just mashed them together and made something that they're probably going to remember for awhile. Sounds pretty cool. Well, you always make us want to talk more, Eric. It's like Eric Matthes: [00:56:33] I know. Same here. Sean Tibor: [00:56:36] well, I think, when you look at these different approaches for getting students engaged, , where they're finding things that they like to do and wanting to do, and they see the value in the range of projects that you see is quite striking as well. Things that we never would expect. And that's the beauty of this things that we would never anticipate or predict that they want to go create suddenly become the most natural extension of where they started. so we've seen things like. I mentioned my sanitizer project and it's got sensors on the doors. One of my students saw that and said, I want to have something trigger on my laptop. When the door opens and closes, I want to be able to make it play a video. And. That meant that he had to go learn all about the MQTT protocol for messaged transfer. And so he was reading documentation and he was trying to figure out message, events and callback functions and things like that. That were way outside of the scope of what we had taught in class. But because he had started with this idea that he had seen, or this, capability that he'd seen, he was able to go create his own project out of it. So these project ideas can take on a life of their own and that's what makes it fun. Eric, do you have any, projects that you thought were particularly surprising, or ideas that, the students came up with, even if they couldn't pull it off, that you thought were pretty interesting and cool based on where they started from. Eric Matthes: [00:58:02] Yeah. and what you were just describing made me think of this particular project, because this is, a project where, what the student was biting off was super interesting, but way bigger than what they could do. it was only successful in the end because we had agreed really clearly on, what exactly what constitutes academic success. So this is a student who has really bright, really interesting, and had many interests and skills and. He was interested in guitar. He played, he was also interested in data and science and whatnot. so his idea was to write a program that would create a cool trippy visualization on the screen as he was playing guitar. and so we've all seen, most of us have seen these. Kinds of things where you start something in a music player and there's some portion of your screen that displays colors, maybe they're bars, maybe they're blobs. so he wanted to do that and like you're describing it just, pulls together all these needs. So I need today to know how to get the signal from my guitar to my computer. Is that through a wire connection? Is it through a microphone? Okay. How do I do that? All right. I know that sound is waves. How do we analyze sound or I do. I analyze it myself. Do I bring in a library that does the analysis for me, and doing that kind of work. And then it was one step further of, what are we going to create visually once we have the sound information, and it brought in all kinds of difficulties that I was shaking my head at. but in the end we got this very like splotchy laggy, Bits of color to change, at the sounds that he played, during his presentation to the rest of this school, you could see like half the people in the audience got that there was a, this was a really hard problem in any change of color. Should be a reason for applauding. and half people were like, so used to seeing really polished professional thing that they're like, what? This isn't, this doesn't match. What I have seen, from music visualizers elsewhere, why are we all applauding? which brings some of these important conversations to our larger audience, and help people pull back the curtain on what do we see technologically and what is going on underneath that? Sean Tibor: [01:00:13] it is definitely something that, setting expectations for students with our projects is really, key here because they see. everything through the window of their screen, or the world around them, the same app that might have a thousand people working on it. on there, it takes up the same amount of space on their screen as the app, that it is their friend down the street, that's working out of his basement. And so setting reasonable expectations to be able to say, this student who's worked on it and has spent. The last three or four weeks or the last three or four months doing it, the depth of their achievement, the scope that they've been able to pull off should be celebrated. Even if it doesn't match up with the thousand professional Facebook engineers that are creating their app or the next big thing that they're working on. Eric Matthes: [01:01:02] yeah. if it helps anybody, any teachers out there to hear this, the criteria that we had for academic success was that this student would, at each stage of the project, articulate in writing what they were trying to do. What was working with their challenges were and what their decision was for the next step. and part of that criteria was, a goal of having something that could be presented at the end. so those, conversations are really important to have early on because they can be really frustrating if you're getting close to say report card time, and now you're competing with studying for other exams and what exactly do I have to. To do, to get done with this. Kelly Paredes: [01:01:40] I made a list to help sum us up I was trying to organize my thought as well of just giving people how, whether you're teaching or even if you're doing your own project, For yourself, some of these will apply, but mostly for the teachers. one of the biggest things in this, how of how to do projects in the class is give it a name assignment. if you want to call it a PBL, make sure it's a PBL and focus on a project based learning. We called it this quarter demonstration of learning. Cause we didn't care. what you made, we wanted you to show that you were learning. How did we know you were learning? You were probably struggling and crying half the time because of your learning. It's challenging. And it's hard. you want me to go through my list, John? Or do you want me to, Sean Tibor: [01:02:25] I was just going to add that language matters with the expectations. So I found when I asked students to do give a presentation at the end of their project, what I got was PowerPoint slides and a lot of texts when I asked them to demonstrate what they made, show us how it works. What I got was a much more interesting experience. They were proud to show off what it was. They showed how it worked. They had a better explanation of it. When I asked for a presentation, I got slides and it was Kelly Paredes: [01:02:49] Yeah, we don't like those. Sean Tibor: [01:02:51] just be intentional about what you're asking Kelly Paredes: [01:02:53] Yeah. And then second after you've given it a name you've given it something to them. So they know I guess I'll move it around. Like you said, Eric is make sure that we've told them what their academic success of criteria. Sean does that really well. I want you to be able to tell me what you learned. give us some sort of demonstration. I always put a horribly low amount of lines of code. Just to give, cause they always want to know. they're like how long does it have to be done? Like 25, 25 30. I give them some sort of academic. And I say, listen, you have to use these concepts of Python cause you're sixth graders. And I want to make sure that you know how to make a list and you know how to do variables and you understand what you're doing when you're writing, a function or something. So I do give them some sort of correct criteria. And then. The next list that we didn't talk about, but we touched over it all was making sure that it connects to their interests. A lot of the kids will go do a project and they don't know where to start. And I, that when you were talking about the guitar and the music and the light, that kid was engaged because of their interest. So having the project by the interest, do you want me to keep going, Sean? Do you want it? Sean Tibor: [01:04:05] to add to that, when a student goes to something that they're comfortable with, they may be going there because they're comfortable. Not because it's something that they're interested in. So I've had a lot of students who have something in turtle as their fallback plan. I've got two weeks to do something. What I wanted to do doesn't work. So I'm going to go back to my comfort area of turtle because I know I can make that work. And so when they do that, I challenged them to say, okay, but if you go to turtle, the expectation is still that you are learning something new that you're creating new expertise for yourself. We're not going to just, Do the same thing we've been doing, you have to show me some that you're learning something new. The expectation for growth and success is still there. And how are you uniquely solving a problem or creating something new? Kelly Paredes: [01:04:49] Yeah. And then I put on, make sure it fits in your timeframe and that kind of goes. For me together with iteration. So most of the kids, if they'll finish three days ahead of the schedule or they're done, they're like, I'm done with my project. I'm like, great. But the timeframe is here. You still have four more days. And I know Sean does this a lot. Go back and do it again, add some more to it. So even though the kids, that kid that's been coding. Forever and spending a lot of time finishes ahead of time. There's always more you can do. I always tell them that it's not perfect. There's never any perfection needed, but go back and make it better. So, And then I think I put on there is give time to present. Like you said, Eric, give that time to talk it out to show sometimes what, even when you run out of time at the end of the project, I like them to put it in a video screencast or just something that they have as a documentation to themselves. If they can walk it through, if they can present it, even in a recording, I at least I get to see it and I get to hear them talk about it. And then I can share it to other people and I'm like, Oh my gosh, did you see so-and-so's work? And that's something that they like to do. So as a summary, I was thinking, I don't know, Sean Tibor: [01:06:04] That's very good. Eric, anything that we missed from your list also? I know you had spent some time thinking about this and reflecting on what we should cover and talk about with projects. Anything that we should add. Eric Matthes: [01:06:15] I have two quick closing thoughts. one is to have a plan for version control, to if you'd know, get, that's great. students, can't always be expected to learn version control, while they're doing a project and especially younger students, although, people of any age can learning if it's the right time and they're motivated to, but as a teacher managing a class of students engaging in projects, I think you do need to have a plan for how you're going to manage version control for and with your students. because it's set up for frustration and failure is. Students invest a couple of weeks of time building a project. And then they, in the course of trying to make it work, mess it up and it's all broken and they're lost and they CA they don't have time to go back and start. so version control can be as simple as that every day, you're going to make a copy of your folder that contained your project and call it a project. Dash Monday project last Tuesday. and it have explicit conversations that this is so that you are free to try anything you need to each day. and if it totally breaks, the worst thing that'll happen is you go back to yesterday's project, copy it and start over. and that's exactly what get does. it does it on a much more. finely tuned basis, but it always gives us the ability to go back to a working state of a project and not have to start over. so I think you need to have some specific plan and a specific conversation with students about how you're going to manage that for whatever the scope of the project is for each student. the other thing I was going to throw out there for everybody, Hi, Kelly. I think you brought this up with Allie last week. About, there was a question of how do you take something that's running off of a database or a spreadsheet and turn it into a project. And I think that's one of the clearest motivations for learning a framework like a flask or Django, because those are projects that basically take any code that you can write and put, the front end in a browser. And everybody has browsers access accessible to them now, on laptop, on a desktop, on a phone. Yeah. And so if you are familiar at all with there's web frameworks, then you can take any pretty much any code you write. Maybe the exception is a game. And you can make that accessible to anybody you want. And I think for me the difference between no, do choose something like flask, or do you choose Django if you're just trying to make it accessible to people that on your network and you don't have to deal with security. Something like flask is simple and keeps that simple. if you're trying to make your project accessible to anybody on the internet, Then you're going to need to deal with user accounts and security and whatnot. and Django brings a lot of that stuff in for you. so I know that's higher level then newer people and younger people are dealing with, but it's nice to know that, like if I get a project that I really like, and I want to take this as far as I can make it available to everybody in the world, how much would I have to learn? one of the paths for that is learning a web framework and making accessible through a browser. Kelly Paredes: [01:09:17] yep. I take that as personal advice. I know that's on my to-do list. I'm getting there maybe by next year when we have you back that be further along, Sean Tibor: [01:09:30] All right. we'll try to. Wrap it up here. We, as I think we experienced last year, we've gone quite a bit longer than we expected, but that's because the conversation is always wonderful with you, Eric, we really do enjoy speaking with you about these topics and your very thoughtful consideration and perspective on how to approach, teaching inside, outside of the classroom, wherever you happen to be in wherever the students happen to be is always welcome on our show. And again, we thank you for having the time with us today to Kelly Paredes: [01:09:59] And such a, such an easy person to talk to. I so remember meeting you at PI con and it was just like an instantaneous bond for all of us. So it was such a great person to talk to. And I really appreciate all the feedback. You'll send me Twitter messages and go what'd you try dictionary. And I'm like, okay, let me know how this goes. Okay. So it's, you're like my secret mentor, my Twitter mentor. Eric Matthes: [01:10:24] Well, thank you for the kind words. And, the feeling is mutual among a lot of your listeners. We love hearing your thoughts. Sean Tibor: [01:10:31] Thank you. so to summarize. We've found in our experience so far that projects are very valuable in a teaching context and they build a lot of the skills that students will need outside of the classroom as well. I tell my students this story all the time about how my first assignment out of college was at a very large fortune 500 company. I went in and I spoke with my manager who gave me this project to work on and I said, okay, well, what does it look like when it's finished? What's the solution here? what do you expect? And he said, I don't know, that's why I've hired you. So I want you to come back to me when you've got it about halfway, figured it out, and then we'll decide how to finish it the rest of the way together. So this idea that projects are something that only happened once you're outside of school. I think is misleading the idea that we can learn better through projects and collect a lot of our knowledge together and learn new things that are impossible in a siloed fashion is. It is really the core of why we learn projects in computer science. These projects help us turn the abstract and the conceptual into practical reality. And there are a lot of different ways to do that. we will post some of the resources that we've talked about here, some of the project ideas, to the show notes so that you can follow along as well. If you'd like to discuss. more about projects where you have ideas and experiences that you want to share with us. You can always contact us through our website@teachingpython.fm. There is a bit of a backlog in listener emails that I discovered this week. So we'll probably devote a show to that coming soon. If you'd like to engage with us on Twitter, our handle is at teaching Python. Kelly is at Kelly Perez on Twitter. I am at SM Tibor on Twitter and on Venmo. So if you want to send me coffee money, that's the best place to do it. you can follow Eric at EHR Mathis on Twitter. He is always posting some interesting and thoughtful, The content about a variety of topics. and Eric, you've got, this past year, you also published your latest edition of Python crash course. Anything else? That's in the publishing pipeline for you right now? Eric Matthes: [01:12:36] not immediately. I'm hoping to do a data science book, but that's a year or two away. Kelly Paredes: [01:12:41] I don't have a year. Sean Tibor: [01:12:45] Maybe you can be an early reviewer Kelly Paredes: [01:12:47] I'll read a chapter like I did to learn about classes. Eric Matthes: [01:12:52] Yeah, well, we'll put her project off another year. Sean Tibor: [01:12:56] Okay. we'd like to take the opportunity to thank our Patrion sponsors. You keep everything going for us. Keep the lights on with our podcast to make it easier for Kelly and I to get content out to you on a weekly basis. new episodes drop every week on Tuesday, sometimes on Wednesday, depending on how the week is going. but we are looking forward to our upcoming list of guests. We're going to keep. publishing new episodes throughout the end of the year. We may take a little bit of a break towards the end of the year on new episodes, but there will always be new content coming through our website. So, one last time. Thank you again, Eric, for joining us, it's been a pleasure to have you, and we hope to have you again soon. So for teaching Python, this is Kelly Paredes: [01:13:34] this is Kelly signing off.