Sean Tibor: Welcome to Teaching Python. This is episode 138, and today we are live with Pamela Fox, recording and talking about learning, teaching, and creating. And so my name is Sean Tiber. I'm a coder who teaches, and my. Kelly Schuster-Paredes: Name'S Kelly Shuster Paredes. And I'm a teacher who codes. And we're all over the place with time zones. Pamela Fox: Today I'm Pamela, and I'm a developer advocate currently, but have been a teacher and creator at different points. I just like to oscillate wildly between teaching and coding and creating all that stuff. Kelly Schuster-Paredes: It's the best job, I think. Sean Tibor: I mean, it's interesting. I feel like being able to switch rapidly back and forth and try different things that you learn and create and then teach it to others is something that often makes our practice at both a little bit stronger. Pamela Fox: That's right. Yeah, yeah. Whenever I learn something new, I'm like, okay, when do I get a chance to share this knowledge with other people? But part of why I, like, teach or blog or any of that is because I feel badlandhouse. Whatever. I have knowledge that hasn't been shared. Like, I feel like I'm hoarding knowledge. So anytime I feel like I'm hoarding knowledge, I'm like, okay, I got to get it out. I got to get it out. Kelly Schuster-Paredes: That's awesome. Well, we're going to start with the winds of the week, though, Sean. We're going to get into this conversation. I'm so excited. Sean Tibor: Very nice. Well, Pamela, why don't you go first and share something or interesting that's happened inside or outside of the classroom? Pamela Fox: Let's see. So today I sent a pull request for the open source package that I'm new to. So exciting to contribute back to popular open source packages. This one's called light LLM, which is a wrapper for many large language model APIs so they can switch between different models. I sent a pr, and it was fully tested, so feels good to do that. And then on the personal front, I got my kids to have a dance party with me last night with flashing lights and hula hooves and some raging tunes. So that's. I was living in the dream then. That's all I want, is just to have dance parties every night. Kelly Schuster-Paredes: How old are they? Pamela Fox: Two and five. Kelly Schuster-Paredes: Oh, see, those were the best years. I remember dance parties. We used to dance on the bed. I used to have a big bed in Peru, and we would dance on the bed, turn the radio up like the tv up really loud. And now my kids stare at me funny. Cause they're 13 and ten, so have as many dance parties as you can, and take lots of photos of you to show them how fun, how much fun you had. Cause that's really, like, the best time, I think. Yeah, my kids will kill me now that I tell them that my boys were dancing. Sean Tibor: No, mommy, I don't know how we don't do a lot of dance parties in my house. But I had a moment like, that memory where, okay, this is awesome, and I'm gonna save it. I was working from home. My kids were home. They were not at camp that day. And it was a little too quiet. And I was like, what's going on? I walked into my daughter's room, and they had built an elaborate fort with all the blankets and clips and everything like that. And they had gotten a lantern, and they were sitting together underneath the blanket watching the YouTube that they're not supposed to watch, that I don't like. And they were having the best time. And I quietly backed out of the room and closed the door so that they don't know that I'm there. It was pretty magical. Kelly Schuster-Paredes: That's cute. Super cute. May you have your win this week, Sean. Sean Tibor: Yeah. My win was just a moment that I know Kelly will not find surprising at all. But I'm a bit of a history nerd. I love reading about history, and AP european history was one of my favorite classes in high school. I'm in Bratislava, Slovakia, this week for work, and we have an office here, and we're having some workshops. And so on Sunday morning, we flew into Vienna, and my coworker, who was on the same flight at me, remarks that the first time she was in Vienna, she was in a refugee camp. And it blew my mind a little bit. So I had all kinds of questions for her, like when this was and how this worked and everything. She and her mom, or I guess her mom had really pulled this all off, basically defected from Hungary back in the eighties to Austria and applied for asylum. And the whole thing, it made me think about what a historical area that we were driving through. It's only about 25 miles from Vienna to Bratislava, but were basically going through the Iron curtain at that point. You have the Iron curtain. You have all kinds of war history, the austro hungarian empire. All of these things are right in this area. And we drove for 25 minutes in the back of a rented car through the austrian and slovakian countryside. And there are just electric wind turbines everywhere now and farmland. And we cross the border without slowing down. And it just was one of those moments because this is my first time here to think about how much this area has changed in the last 50 years. Like what it was, what our world has become, and how much I think sometimes we take for granted the profound peace that we have despite all of the things that make the news compared to when I was a kid and thinking about what was happening in the world, a different place now. And it just was a very real and surprisingly moving experience to have that and think about it over the weekend while I was supremely jet lagged. Kelly Schuster-Paredes: You always have those moments. It's very deep. I love Europe and there's a lot of history, and hopefully you get to see some of it while you're there. Sean Tibor: I saw a castle on Sunday. That was pretty nice. Kelly Schuster-Paredes: Well, mine's a lame wind then, compared to yours. But I work all summer as well as an educator, so I was getting through a lot of things with the apps and putting in my vendors into class link. So I worked a lot of hours. I think I worked, I don't know, like 30 hours for someone that's supposed to be on summer break. So I said, that's it. I shut down. I went out on the boat on, I don't know, like Tuesday. And then we drove up to North Carolina, stayed on the Tuck river, which at Tuckaseegee, which is near with all the Cherokee indian area, went fly fishing. We floated down the river for 5 hours. So it was nice. I only wrote one blog post and I really tried not to be on LinkedIn. Pamela Fox: It was really hard. Kelly Schuster-Paredes: And you're in the cabin with nothing really to watch because the tv's not that great. So I did get on social media a little bit, but I tried to unplug and not think about work and take a little bit of break. So I'm doing that again this weekend. So I'm really excited. I'm going to do it Thursday, Friday, Saturday, Sunday. Try to turn off again before because it's starting. I'm almost done with summer. It's very sad. Another year. Be like 27 years, Sean. 27 years. But anyways, we digress. Pamela, you're an expert educator. We're going to jump right in. We're going to let Sean tell about you, talk about you and your role as a developer advocate or principal cloud advocate. Sean Tibor: I'm very excited about this. So Pamela is joining us. She's a principal developer advocate at Microsoft, and she specializes in Python in the cloud. And when I get to write Python these days, it's in the cloud. So I'm very excited about this. It's also something that I think we'll get into for educators, because when I say Python in the cloud, and I think when Pamela says Python in the cloud, we have a pretty good sense of what that means to us. And we might disagree on specifics, but there's some really cool things that you can do with Python with the cloud. It's hard sometimes for people to grasp exactly what that means. We'll spend a little bit of time talking about that because there's some really cool things that, that enables for educators, for people to learn. Pamela has also been an instructor at UC Berkeley. She's been a developer at Khan Academy. I want to understand, like, it says something here about how you wrote the CS principles course at Khan Academy. I'm totally excited to dig into that because I have entered several students through the CS principals course, kind of one on one. One of the things I realize also is that when a student is struggling, especially in that course, to wrap their mind around all these new concepts and ideas and how to think about things, they need all the help they can get. So being able to point them to Khan Academy and other resources, like it can be a huge aid, not just for their knowledge, but for their confidence. So I'm excited to dig into that with you. Where would you like to start? What's on your mind out of all these topics that I brought up or something completely different? Pamela Fox: Well, I guess the python in the cloud is. That is interesting because I'm curious if we actually have the same interpretation. So when you say that you're always writing python in the cloud, what does that. What does that mean? Kelly Schuster-Paredes: Well, can I talk before he talks? Because he actually does. For me, as an educator, I'm literally like, oh, Colab. That's in the cloud. That's pretty much counts. Pamela Fox: Yeah. Kelly Schuster-Paredes: As far as we take it. So that as a basic level, I always want to remind people I started coding seven years ago without a CS degree. So that's. That's our take now. Sean, go. Sean Tibor: Well, in my day job, I'm a cloud engineer, so a lot of the work that I do is platform engineering for AWS. For me, I'm amazed. Everywhere I look, there's Python code running something, whether it's scripting some sort of update or upgrade or being used for serverless functions, to be able to process a little bit of Python code to automating metrics, delivery, doing cool things with the way you can observe and see what's going on, it feels like everywhere you look, Python is there. And that's even before we get to looking at LLM and generated AI or data engineering or any of those things that are also really, really fun and cool, Python seems to be everywhere there. So when I think Python in the cloud, I'm thinking mostly serverless, right? But that's mainly because of what I'm doing with it, not necessarily what's possible, right? Pamela Fox: Well, okay, there we've got a big range, and I don't even know if what I think of it is even included in that. So a lot of what I do at Microsoft is show how to run Python web application back ends on Azure infrastructure. So that's using Python to develop a web app backend. So flask, django, fast API, those sorts of frameworks where you can take in HP requests and spit out responses. It's fairly popular option when you're developing a web app, like you have a front end, you have a back end. What are you going to write your backend in? You can write it in any language. Why not use Python? It's a pretty good language. It's what we use at Khan Academy for a very long time until we port it over. It's what we used at Coursera. I was also an early coursera engineer, and we wrote our original backend in Python. So that's actually what I a lot when I am in the industry, I'm a web developer, like a full stack web developer. And a lot of times when I written full stack web apps, I've written Python on the backend. So at Microsoft I show people how we can get those Python apps deployed to Azure. Now, the issue with Python is that we can use it for so many things. You can use it for sysops things. So you're running scripts in it. We can use it for ML, for data science, for data analysis. People are running all sorts of scripts in the cloud using Python, interacting with all these cloud based tools. Then the final usage that you were talking about is that Colab. Colab is a hosted Python environment. So many people use Colab or things like that, like Jupyter Hub. Jupyter Hub is a hosted Jupyter Python notebook environment. So there you, if you write Python it, you're writing Python in some cloud, right? So I think that's really great from education, from a teaching perspective, the fact that we can spin up these environments, visit URL, and just start typing Python into them. I really use GitHub codespaces a lot, and that's another way now that you can spin up a code space for any repository on GitHub and you could just start programming Python in that repository. And that's been really popular with some classrooms, like David Milan, he just put out a paper about how they use containerized environments for CS 50. I don't know if you saw that, but he actually was on the GitHub team as like a fellow or something for a year and helped to develop code spaces into what it is to make it really helpful for classrooms. So yeah, lots of ways. Python is cloud. Kelly Schuster-Paredes: So I feel better now because I've then I've actually haven't deployed an app, but I've been practicing Django and I did some actually must have deployed an app, but I've ran it. Maybe you can clarify. So during my data science bootcamp, I wrote a flask app, but we ran it through GitHub pages to run it. So that's technically the cloud, right? Pamela Fox: So GitHub pages can only deploy static content, as in it can only deploy HTML and CSS, it doesn't have a back end itself. So if you manage to deploy a flask app to GitHub pages, then you must have somehow frozen the content. And I actually do that. I use frozen flask. That's a framework. I use frozen Flask for my personal website. So my personal website is actually a flask website where I like run a script and it freezes all the output as HTML CSS, because that's just cheaper for me to host. The cheapest thing is always HTML css if you don't have a back end. So that may be what you did in that case. So I do think GitHub pages is a great way to get started when you're doing HTML CSS JavaScript, where you don't need a backend. Right. So that's what I even have a Khan Academy tutorial, I think still that shows how to use GitHub pages as part of our HTML CSS course on Khan Academy, because that's one of the easiest ways of getting started. It's free and a lot of people have Githubs now. Kelly Schuster-Paredes: So much learning. Sean Tibor: It's interesting because there's a couple of things you brought up that are particularly interesting for educators. There's feels like there's two problems that we're constantly solving and trying to solve for our classes. The first one is how do I get people writing code as quickly as possible with as little installation, configuration, friction, if you will, in the process. We've used colab like that for years because we were already at Google Apps school. You can launch a colab notebook and we can start writing code fairly quickly in that notebook. But I think code spaces and there's a couple others that are out there like that kind of help solve that problem. Especially when you start looking at those containerized environments where if you need dependencies that you can put into a project and then share that with everyone, it makes it a lot easier to do that from a code space based on a repository you already have. Pamela Fox: Yeah, yeah. The thing that's really exciting to me about codespaces is that I can use for doing like a full stack web app that has a database that has like a caching layer like you, because you can bring postgres in the postgres container, you can bring redis container in, so you can compose these more complex environments, and you can get people started in them in five minutes. The time it takes to build that container, to start it up. And they don't necessarily have to understand what a container is. They just need to be able to click on the code space and create a new code space. So as long as I go through the effort to containerize it, then students get started really quickly. I love to get students started quickly. I hate setting up anything on my machine. Like I even on my personal machine right now, I can't even run Python in the terminal because I messed it up at some point and I don't want to deal with fixing it. I don't know when happened. I tried to install Pym so I could have multiple python versions. It didn't work, and so I can't even. But it doesn't matter because I either use Python virtual M Vm or I use dev containers, which is like code spaces but local. I don't have to deal with it because I just, I can't deal with setting up environments. I just can't. Kelly Schuster-Paredes: I love that. I love hearing that because that makes me feel so much better. I always go into versus code and I'm all over the place, and then I've installed, and then I get a message saying it's not installed, and yes, yes, yes, yes, yes. And I want to throw the computer out the door. So that's why I always go, I get it running perfectly and they don't know what to do it. That's interesting. Is GitHub code spaces free? Pamela Fox: Yeah, so I think everybody gets 60 hours. I think students get maybe 120 hours, and then you can request more. So, like last month, I was running a lot of workshops, like live workshop streams, and I did end up going over my 60 hours. So I paid for a little bit more. So I think I did pay $30 last month, which I think is still pretty reasonable. So it would cost money if it was like your 100%, your full time environment, but for just occasional things. Like I mentioned, I made a new pull request today. Right. I did that all in a code space because, yeah, I feel more confident opening something up in a code space and starting there, then open it up on my local machine. Sean Tibor: Yeah. And Jay's in the chat and he was saying that they just are now changing the charging model. So it's like by core usage and there's, I think, 40 hours available there. I think probably worth going and checking before you just start spinning up code spaces. Make sure you check the cost model, but you don't want to be in the middle of a lesson and get shut down because you've exceeded the number of hours without having a billing method. So worth checking out for sure. The second thing that you brought up that I wanted to come back to was you mentioned about publishing static sites, and this is another topic that I think is really interesting for educators because we're always fighting for funding and resources and how are we going to pay for this? The fastest way to get your technology director to give you a blank status and tell them that you want to set up a cloud account and start running some resources in the cloud, and they will look at you with terror, because how are we going to do this? I think this is an area that's sometimes overlooked for educators, is the value of being able to deploy a static site, because you can use it for all sorts of things, lesson plans, you can put your own personal site up there. You can experiment with data, you can use it as a lesson itself. And the costs for this can be incredibly cheap, like pennies a month in terms of hosting static sites the way you do it. So maybe this is a blog post that we need to write about how to, you know, use static sites for, for your educational purposes on the cheap. Kelly Schuster-Paredes: I'll let you write that one. He always said. He's like, yes, go ahead. Pamela Fox: I think that they can be really helpful. I write all of my, well, most of my slides. I write with revealjs, which means I write with HTML, and then it turns it into interactive slides that I can use in browser. I know not everybody loves writing HTML. To me, I love writing HTML. It's like a form of meditation for me, where I'm just like, ah, yay. I know other people prefer markdown, so some people, you can also use markdown to make reveal JS slides. I really like it for teaching programming. So whenever I'm teaching programming I always write with revealjs because then I can add little copy and paste buttons on all the code snippets. I can have syntax highlighting with the highlighter plugin. I and so I just think it makes your programming slides much more usable because you can actually copy and paste from the slides, which I just find so incredibly necessary. I do sometimes have to use PowerPoint now because I do work for Microsoft and all my colleagues seem to expect PowerPoint. Sean Tibor: And that's not just a Microsoft thing. I'm trying to break my company of that too and show them you can. Kelly Schuster-Paredes: Do what I do. I write in beautiful AI or some other AI, then I download it, then I upload or I export it to Google Drive, then I download it, then I put it up to a PowerPoint. So no one ever knows. There's a couple of font changes here and there, but you know they might see it in the back end, but you can just put it up there. Pamela Fox: Yeah, yeah. Google Docs is also an option, but you don't get as nice copy and pasting. It just hurts me whenever I have to use PowerPoint for teaching programming because I'm like sitting there trying to copy and paste the code and realizing I just can't do it. So if you do use revealjs or another framework like that makes HTML slides, then that's really nice and compatible with GitHub pages. So I actually just, all my slides are auto published to GitHub pages whenever I do a git push. So it was like a couple of minutes before the workshop git push and my slides are updated and they just stay at that URL and it's an easily accessible URL for everyone. Sean Tibor: I think this is the point where I have to put in the public service announcement. If you're hearing all these things about publishing static sites and GitHub integrations and all those things, I just want to assure all of you that you can do it. These are things that may be a little bit challenging to learn the first time or figure out, but it's also a very rewarding challenge because at the end you have things that are published that you can show other people and they can see it, and you can show it to your students or other educators. It's a really rewarding challenge to undertake and you don't have to try to do all of it at once. It is pretty exciting that first time you have something deployed there and you realize that it's almost free to host it instead of having to pay money to this hosting provider or that provider, or having to worry about a WordPress website that's been hacked 17 different times. It's all just there. It's pretty secure and you don't have to worry about it after it's published. You can just keep updating and adding new things. So just wanted to make that PSA. If you're a little nervous about this and you're listening, this is not as hard as you think. It is challenging, but it is something that you can tackle and get a lot of mileage out of. Kelly Schuster-Paredes: I'm thinking about all my international friends. Every three to seven years. We're constantly, you know, I'm not part of that group anymore, but I used to be. You're constantly moving around to different schools. If you've put this stuff on your school's website or your school's Google Drive, then you have to take out. Or if you've had it on your school's computer, then you have to transfer it to your own personal computer and sometimes we don't have one. So at least you have this and you constantly can update it as you travel to new schools because I know some of my friends have been to almost every continent out there, so having to bring all their files with them, it's just especially for CS because there's not much that's going to change in your content. You might improve a couple of lessons, but you're teaching Python. You're teaching Python. I don't want to switch gears, but I'm going to switch gears because Jay mentioned in here that you contribute to a lot of projects and building on your own things, building your own, and you have an example for absolutely everything. Kind of want to switch because you do have an impressive teaching career. Like Sean said with the AP computer science. Just for me, I think I'll start with an easy kind of question because I'm going to pull one from one of mine. What is your favorite lesson to teach out of all those teaching experiences? I always want to know, what's your favorite computer science Python lesson besides the cloud? Pamela Fox: That's a good question. So I've only been teaching Python for four years or something like that because I started teaching Python at Berkeley. Before that I was teaching all front end stuff. I've been programming Python for a very long time, but I was teaching front end because that was what was accessible to teach in terms of getting people's development environments right. We didn't have code spaces and all that stuff. So for a long time, I was only teaching HML, CSS, JavaScript, anything I could figure out how to teach with just a browser, because that's all I could trust that a student. So that's actually where I have the most experience. Python. I taught in the last four years, starting at UC Berkeley with CS 61 A. And then I teach a Python course for a startup called up limit. And then I also teach python. We could call it teaching when I run live streams for Microsoft. I don't think it's exactly true teaching because I'm not like, dealing with the struggles of having a students in classroom, but I've also run those workshops for girl development, which is a nonprofit organization that teaches to women. What is my favorite? I mean, I just. I like for people to be able to make stuff. So I just get the most excited if I am teaching people how to use web frameworks, because then they get to make websites. Because I got started in programming by making a website. Like, back then, it was like Perl was one of my first websites, and then Java applets. This is like back in the nineties. And so that was the most exciting me when I first discovered it. So giving other people the tools to build a website, whether it's the front end or the back end, that's just what I like. I like to see what they make with it, see what websites they build. Like, when I've been in a classroom, it's always fun to see where people take their projects. That's the most fun. It's like, okay, I got you started with something, but where did you take it? With your unique mind and your unique interests, where did you take it? Sean Tibor: That's a solid experience. Kind of amazing to watch them do that for the first time, because all of us consume websites every day, like hundreds of different pages, and we're looking at the web often, whether it's on our phone or on our computer. And that might be the first time that they realized they could make one of those instead of just consuming it. And then they realized they can make anything that they want. I'm just like, thinking about that experience and, like, what that feels like to be to show them that and lead them to that way. And what are some of the examples that you've seen in terms of what people have made with those first websites? Because I think it's come a long way from when I was first learning to make web pages in the nineties. And there were like, traffic or construction cones on everything, right? Kelly Schuster-Paredes: That's like the Dreamweaver nightmare. Pamela Fox: Oh, yeah, yeah. It's good. Questions? I volunteer in classrooms sometimes. So I did teach web development in Berkeley High School, which like 9th grade through 12th grade. Their final project was webpages. Some people had web pages about their favorite basketball teams. People had web pages about Rubik's cubes, people. You could just make a webpage about whatever you're into. I like seeing them like name the CSS class names with just ridiculous names. Students bring so much self expression to their naming and development environment. I remember ones, Khan Academy, we have, Khan Academy has a school attached to it, the Khan lab school. And so we would sometimes do office hours for the students down there. And that's a mixed age classroom from between five and eleven or something. I remember helping one of their, you know, the nine year old students with their program and they had some sort of extension on their computer that was raining snowflakes on top of their programming environment the whole time. And apparently that was just how they programmed. They just programmed with snowflakes in front of their ide the whole time. And I was like, wow. Wow. I wouldn't, I wouldn't do that. Personally, I find this incredibly distracting that there's snowflakes on top of my code. But you do you, right? So people, they bring their self expression to everything. Kelly Schuster-Paredes: That's cute. Reminds me of Sean and his corgis running across Colab all the time. That was the first thing he told the kids how to do. I'm like, why? Why? What does that do for us? It makes it fun. Pamela Fox: Well, my manager is actually the author of versus code pets or just extension that puts pets in your versus code. Kelly Schuster-Paredes: So. Yeah, that's Anthony, right? I think I know that person. Sean Tibor: Personally. In my defense, there's a very practical reason for that, which is if kids and adults are smiling and happy as they're writing code, they're associating that emotion with this. It's something that's cute and it's fun and they get excited about it instead of something that provides them with anxiety and fear and insecurity. I'll take that all day long. If it takes Cory's to do it, or snowflakes or versus code pets, it is way more useful than we give it credit for it. It helps that emotional state that people need, especially when they're going through those first few steps. Pamela Fox: Yeah, yeah. I mean, ideally, I mean, I don't always abide by what I believe in terms of curriculum because I'm often limited, especially at UC Berkeley. But like, ideally every project starts off with customization. There's even research about this they did with bootstrap and game generation, and they, like, discovered that if they gave students the ability to just change, like, the background and the gameplay or avatar and just minor things like that, they felt way more ownership over their work, and they were just a lot happier about it. So ideally, the first step is actually customization. So the python course that I have running online, sometimes the first project is the decision maker, where you use if else statements to make a decision, to come up with a scoring algorithm. For my example is, should my toddler eat ice cream? So answer a bunch of questions like, did we eat ice cream that day? Do I want to eat ice cream? What's the temperature outside? And then use if else to decide. The first step is actually to brainstorm. What is your decision making algorithm going to be about? People, and these are adult learners, but they pick so many different things. Some people are for deciding about stocks. Some people are medical decisions. Some people are sailing and surfing. So many different realms that people are interested in. Kelly Schuster-Paredes: That's a good idea. I'm actually writing that one down because I always do the same thing for 6th grade. I've been teaching 6th grade now, I don't know, five, six years, I don't know. Sean, he taught it first because he was better at it. They scared me. But now I love them, and I always do the same thing. And they love. They love when you know their name, and they put Sephora shopping and all these other conditional things. So I love the personalization. In fact, that's why I like. Actually, 6th graders are much more creative. But adults, they love it, too, but they get into it once they have that ownership, instead of saying, hello, world, like you're supposed to, it's hello, what is it? Skibity, skibity rizdhae. I'm trying to learn all this slang so I can at least be up on it. But quick question. We want to go see us principals first. Sean. Sean Tibor: No, no, go for it. I'm just curious to know what you think a quick question is. Kelly Schuster-Paredes: It's not a quick question for us, but quick question. So, two weeks ago, Doctor Chuck and I know you guys know each other. He gave us a list of all these great qualities of what makes a good course. And you seem to have taught in a lot of places, and Khan Academy is a very reputable source. Berkeley. Okay, so what would be some good advice for some of our teachers who are coming out or just starting to teach Python or just starting to teach NECs or what could they do differently? Because right now I'm thinking, oh, I'm going to change it up and do decision trees because we need that little motivation come August to get us excited about teaching the same stuff over again. So what would you give them? Anything. I'll give you some if you want me refresh of what? Some of the things that Doctor Chuck. Engagement and connection. Yeah, he did so those things, right. Pamela Fox: I think that Doctor Chuck's list was really good. I would aspire to that list. I wasn't able to ever always do that given my constraints. So when I was teaching at UC Berkeley, I was teaching an existing course, and this was an existing course that has 2000 students and 150 core staff. And so any change that we made required re education and retraining of the course staff, changing all of the course infrastructure, which was a flask website, like just huge amounts of changes to make any sort of change. So I wouldn't necessarily point at that course as being emblematic of what you should do. It has a very, very different approach. So I guess they'll talk about the approaches. So with Khan Academy, I created the computer programming courses first, which was JavaScript with processing, J's, HTML, CSS and then SQL. And those are very project centric like output centric courses, which I think is a really nice way of learning programming for lots of people, especially if you like being creative and that sort of thing. With those courses, my general approach was to try and put as many interactivity points as possible, right? Like with the Kanye programming courses, we'd have five minutes of me talking over something, five minutes of a coding challenge, and then at the end of a module, like a 30 minutes project, and the project is a lot more, there's a lot more creativity allowed there. Then we just repeat that. So that was my general approach for Khan Academy, which worked pretty well, but it was a very focused on output, right? Because when you're doing processing, you've probably done processing like processing, you like draw shapes and that sort of thing. So people would get really, really good at that. But they did struggle with like functional, like using functions, like defining functions, using functions, getting return values, that sort of thing, because you can actually go really far in processing without really grasping that well. And I could see that whenever students got to the functions project, you could tell that making a function was difficult. So that's interesting. The other observation with this kind of output focus things is that not everybody likes that. Like some people were intimidated by processing because they don't feel like they're artistic at all, and they felt like their drawing skills are being judged. There's some people that just immediately turned off by this sort of like visual output. So like HML, css kind of processing both like that. SQL is luckily like more data, so that kind of appeals more to that. Berkeley has a very different approach. So the CS 618 was originally a scheme course. Structure, interpretation, computer programming, the programs, if you've heard of that one, from Mitz, originally in scheme, scheme is a completely functional language. Parentheses everywhere. It's a recursion first, because that's the only way of doing stuff in scheme. So in this python course, we taught recursion in the first week, which Doctor shuck would absolutely hate. And I don't hate it. I mean, I don't not hate it. It's a very different approach. And because it has its roots in scheme, it was interesting coming to this Berkeley course and realizing, oh my gosh, this is completely different from how I'm used to teaching. How do I make this work for me, for the way I'm used to teaching? The other thing with the Berkeley course is that it's very functions first. We often see functional, not just like about being functional versus op, but just functions first. Everything they do is a function. Every exercise, every homework, they are writing the body of a function, and then they're running tests to verify that the input output matched from the function. So the good thing of that is that they immediately had to start understanding functions. What is it? What are arguments? What are return values? They start to grasp it very early on, and they can build on that skill throughout the course. The bad thing is that it is harder to make functions first. Be fun. We did what we could, and we actually even developed a middle school curriculum for Berkeley's snap. Snap is like the functional version of scratch. Kelly Schuster-Paredes: I don't know if you've seen it. Pamela Fox: But we developed a middle school curriculum for that. That's like functions first. So we figured out how to teach programming for middle school with lock based stuff, with using functions as much as possible. So that was really interesting to try and do that. That's just because Berkeley really likes functions. So these are two very different approaches that my takeaway now is that I do try to do functions first a little bit more. I still don't know if this is a good idea, but I think that if more people were able to understand how to write functions and how to abstract their code and parameterize their code that way, then they would be able to write more powerful programs. Because I do have this concern with lots of people who use Python. They use it maybe in a notebook, and you're constantly calling functions and getting results, but not necessarily building your own function. So then you end up with these notebooks, with these outputs that are hard to reproduce and you haven't, you don't have them like well encapsulated and they get a little bit spaghetti. Kelly Schuster-Paredes: So we do a lot of spaghetti code. But I love, because Sean remembers the day that I totally understood functions. He was teaching it and it was like three or four years into, no, three years into two years into teaching, and I was like, I get it. So I have always struggled the thought of teaching functions, and I use it with python turtle, and that seems to be the best thing because then we do the repeating. They have to use a function that does something different each time. So they'll do repeating patterns or little stuff. Pamela Fox: Is that a pure function, though? That sounds like a function with a side effect? Kelly Schuster-Paredes: I don't know. What's the difference? Pamela Fox: Yeah, I come from Berkeley, I start using all these terms. Yeah. A pure function is one that has a return value and no side effects. So it's like not, it's not like drawing. Kelly Schuster-Paredes: Oh, yeah, no. Yeah, it's a definite output because they're only ten. Pamela Fox: So we do return. Sean Tibor: So definitely side effects. Kelly Schuster-Paredes: Yeah, we do returns and the difference between a return and print and output in 7th grade. But the 6th graders just write their own function. So that we talk about the fact that if you dry code, don't want to repeat yourself. So we're going to write a function that does, a star does a bunny rabbit in twelve different places. So that's like the start introduction for them, which is a little bit helpful when we get into the return in print. It's pretty cool. But you also did a talk on visualizing recursion. Did you do that? Pamela Fox: Yeah, I did. Yeah. So since CS 61 a was so into recursion, I was like, all right, I'm going to have to figure out how to teach recursion in a way that people will understand. So I built a tool, I think it's recursion visualizer.com. i think it's the domain I got for it. Yeah, that's right. And basically you put in your python function and then it turns it into a call graph and it's an interactive call graph, so you can like step through it and see how things change. And the reason I built this tool is because there was one night where I was like trying to wrap my head around this particularly different, difficult recursive problem that we show. And I like filled this giant whiteboard with a call graph of the algorithm, trying to understand the order in which things happened and finally was able to understand it after doing this huge call graph. And I was like, I really feel like I could have automated that somehow. So when I finally had the chance, I think two semesters after that I made recursion visualizer and it actually is a popular tool with, or somewhat popular tool with Python teachers. And I actually got a feature request the other day where people, somebody wanted to hide the code and just show the graph and then have their students try to guess the code based off the graph. And I thought that was interesting. So it's always nice to see how different people use stuff. So yeah, I experimented with so many different visualizations and analogies and I videos and everything for recursion to try and figure out what are the ways to teach it that will help people understand. Kelly Schuster-Paredes: Very cool. Sean Tibor: I really admire that because honestly, learning recursion the first time was one of the hardest things I ever had to do. It was a total switch in the way I viewed things and I know that when I was doing it, it was very mathy. It was actually a math course, not a programming course, and it was very much like, here's the notation and here's all these new vocabulary terms you have to use. And at the time, in the late nineties, I cant think of anything that was like a visualization tool for this. Having all of these ways of understanding things or seeing things or helping to get to that point where it becomes true knowledge for someone, instead of just a bunch of words bouncing off your brain until it eventually sinks in, I think makes a huge difference for students and learners to be able to grasp that concept. As we were talking with Doctor Chuck, it's one of those things that you may not use all the time, but if you accidentally create a recursive loop and it's messing up your program, at least you can recognize it and go, oh, I know what's happening here and I know how to fix it, and I've seen this before. So that's a fantastic way to help people learn better and faster that we just didn't have before. Pamela Fox: The interesting thing is that for me actually what helps the most is when I have to make the diagram. I usually think to myself, once I'm at the point where I can draw out how something works, then I understand it. That's part of why I put together presentations on something to force myself to draw something out. So, I actually don't know. From a kind of research perspective, if someone is just looking at the visualization and interacting with it, is it as effective as if they have to draw it out themselves? That would be a cool avenue for research. The other thing that we experimented with was Parsons problems. I don't know if you've used those in your classrooms. Kelly Schuster-Paredes: What are they? Pamela Fox: So, Parsons problems are drag and drop coding problems. They seem to be fairly popular in the CS ed research community, like at C. They show up a lot at the computer science education conference. And Berkeley had a research project around faded Parsons problems, where you would fade out parts, like some of the parts of the blocks, right? So you can imagine, like, a block that had a for loop and an I iteration block and yada yada. And you would, like, fade out. Maybe what you were incrementing by, for example, the reason for that is that it would just. Parsons problems, you can brute force rearrange things right to get it right. And so what we found is, like, some percentage of students are brute forcing their way to solution, but if you fade things out, then you can't brute force it. So there's fairly good research behind Parsons problems. And we did an experiment with UC Berkeley, with the CS 61, a course, to bring in Parsons problems as, like, a ramp up, like a scaffolding for the coding from scratch problems. Unfortunately, the results were inconclusive. This is something also I find when I do teaching programming, it's really hard. That's what say, it's really hard. All of you are doing it. That's great. That's awesome, because it's really hard to make every student make something that works for every student. So you can, like, make something that works better for some students, but it might actually maybe work worse for other students. So it's incredibly hard to find interventions that work well across the board and find what is the exact tool that's going to work well for everyone is everyone is so different with how they learn, at what pace they want to go at, because some people will be like, oh, this is boring. I want to go at a faster pace. Other people were like, oh, no, I'm really intimidating, and this is going too fast. So, yeah, teaching is hard. So kudos to those of you who are doing it. Sean Tibor: And I think the other thing that's tricky about it, too, is that based on the setting that you're in and what you inherit in terms of the, whether it's a course, the curriculum, the expectations, you have a lot of constraints on what you can do and things that you might be able to do in a small course or small classroom. You cant do with 1000 students or 2000 students. And so one of the things that Kelly and I always used to do that worked remarkably well was at a classroom of 20 or 25 students, was to treat it like a kindergarten free activity space. This is one of the things that I still remember from being in kindergarten, was the days that were my favorite were the one where there were 20 numbered stations out there of things that you could do and one of them was coloring and another one was reading and this one was solving a puzzle and you could choose your own adventure in the classroom and the magical things that we've seen, making your own website or choosing your own data to analyze or whatever it is. When you give students that choice and the ability to select from a variety of different learning tools or methods or subjects, they tend to pick the thing that theyre most interested in. That is likely going to be the thing thats most effective at helping them learn because whether its consciously or subconsciously choose the thing that theyre most interested in and then that turns into faster acquisition of knowledge. Kelly Schuster-Paredes: I still remember the student that she wasnt really into coding, 8th grade after three years for me, and I gave her Driscolls pillow book and she's like, that's the most learning I've done in three years. I'm like, well that's on you. But she got really into it because six lines of code and she can manipulate her images and resave them. It's a fun thing. So getting students with code just to get them to do things. Sean's fun is hardware and lightsabers as he showed with Doctor Chuck and mine's making graphs. Sean Tibor: I was manipulating and analyzing JSON files this weekend, having a blast. It's not just hardware. Kelly Schuster-Paredes: Okay, that's funny. We obviously went over like we almost always do. Sean, do you want to ask any more questions? Pamela Fox: Cloud, we didn't talk about AP CSP at all. Kelly Schuster-Paredes: Oh gosh, we have to do a little bit of that. Go for it. Sean Tibor: Yeah, I'd love to just learn. What was the, how did you get involved in that? What was the problem you were trying to solve with developing? Because there's no shortage of CSP resources out there. Not all of them are good and not all of them are current. What were you trying, what were you trying to tackle with CSP? And was that with Khan Academy or was that something else? Pamela Fox: Yeah, so that was with Khan Academy. So basically I was at Khan Academy and I did a market analysis sort of thing to figure out what are the, what's the next thing that we could possibly teach. I still have the document. These are all the things we could teach. And what would have the biggest benefit. Now Python was on the list. That was, this was like back eight years ago or something like that. Python was on the list. But in order to fully teach Python, we needed an online Python environment because we believe that iconic family, that if you're going to teach programming, you need to have some interactive component to it to like, really fully teach it. So all of the programming courses have an interactive component. So at the time, we didn't have the resources, we didn't have the engineering and budget to make a Python environment. They do now have Python put together by their team now. So that's great. So I'm very happy for them. But at the time, we didn't have that. When I looked at everything, I said, APCSP is growing in popularity. If you look at APCSP versus APCSA, APCSP started dwarfing CSA pretty early on and had a trajectory which made it clear that AP CSB is going to be more popular than CSA, which is the Java oop course. It's funny because I only had experience teaching CSA. I did that at Berkeley High School. And so I'd never taught CSB in a classroom because it was so new. I said, all right, I think this is going to be helpful to people. It's growing in popularity. There's not that many resources for it yet. And we can make free resources that'll be useful, and we can use our exam prep tools for it as well. So, yeah, so I just researched all the standards. I made a giant spreadsheet that had every single standard. I tried to figure out how am I going to write something that hits up every single standard? And these AP CSB standards are all over the board, especially the first version. So we had hardware programming, parallel programming, user experience, user design this, effects of social media, like, just so many different things. Oh, how the Internet works is a whole big component of it. TCP, IP, DNS, UDP. So AP CSP basically covers. Now I'm not gonna say everything because there are some things that it hilariously leaves out. It covers this huge range. So trying to figure out how I was going to tackle all that and then, of course, having to learn those things that I didn't know yet. And that's really fun, getting to learn something and then try to turn it into content. So, yeah, so I just went through those standards, knocked them off. Right. Wrote articles and exercises on videos when appropriate. Now that content is available now I call it a review content. I don't think of it as a course. I call it a review course. If you're going to do AP CSP, you should do a proper course. Code.org has an amazing course. It worked with them to make sure we were aligned, so our units actually align with theirs because they have a really fun interactive course. You go to a code.org apcsp classroom and it's super fun. It's one of the things where everybody's paired up and they're all working on interesting assignments. That's the optimal experience, is like having an AP CSP classroom that's highly interactive, using a curriculum on code.org. and then the Khan and Compton is there as a review resource. You forgot how the Internet works. Come read up on TCP IP and there's exercises and so you can test yourself. And they're based off of the format of the CSP questions. Sean Tibor: I think that CSP is especially well suited for that because it covers so much. It's such a wide range of materials. It's really easy to forget about something or overlook it. Or if you were sick that day that they talked about how the Internet works, how are you going to catch up on that? View it, and it's a great position to be in because that course in particular is a great way to learn about a lot of different things. But it's also a lot that you have to be able to recall in order to successfully pass the exam. So it also drives a lot of anxiety and uncertainty for students. So every little bit helps. Pamela Fox: Yeah. And also for teachers, because lots of the teachers are for CSP, are new to teaching. Well, definitely CSP, since that's new, but also maybe CS generally. So that's also always a target audience for Khan Academy content. Kelly Schuster-Paredes: I just heard that there's a lot of content. I was supposed to learn it, to possibly teach it, but no, I like coding in Python because all we do is code. Pamela Fox: Yeah, no, I know. It's funny because they pitch AP CSP as being like the more accessible thing to teach, and in some ways it is because it's breadth versus death. So if you're going to teach AP CSA, you do have to go hard into Java. It's just when students have programming errors, you're like, what? And then you have to, like, really understand how Java works with CSB. It's a huge breadth of things. The programming debugging is usually not going to be as tricky since that's a much smaller component. It's a lot of concepts and I've probably forgotten some of them already. Kelly Schuster-Paredes: I'll have to brush up on that. I'll go check out the Khan Academy one, do my revision. Sean Tibor: So I have one last thing I think, before we wrap up, and this is another comment from Jay. And I just have to ask this question because it feels like this is not a random comment. What is a coloring book with elephants? Pamela Fox: So postgres is a database. It's an open source database. It's very popular, the Python community, and that's why I tend to teach postgres when I'm teaching databases for python developers, they have a postgres coloring book with elephants. Now, I didn't make that coloring book. I didn't know it existed independently. When I was preparing a talk for this postgres conference, I drew pictures of elephants for every one of like my main slides. And so I've got like elephants with cannonballs and elephants with bicep muscles. And this all correlated with the talk, of course. Of course. An elephant with a snake, elephants and python. And then I gave the talk and as a speaker gift, I got a postgres coloring book. I was like, oh well, green minds think alike, so there's a lot of colorable postgres elephants out there in the world. Kelly Schuster-Paredes: I have the website and yeah, there's activity book. I don't know if it's the website, but yeah, coloring pages and mazes and word scrambles and there you go. Pamela Fox: There you go. If you need to introduce your like ten year olds to post grad, I still haven't introduced my five year old to programming whatsoever. Like, it is not a priority at this point. I think the perfect age is like middle school, 6th grade, fifth grade perfect. Kelly Schuster-Paredes: My son's an 8th grader, had to teach him in 6th grade and he was like, eh, I'm like, okay. Whereas Sean's youngest, I think is going to be another. Sean Tibor: Actually, he doesn't code that much either. As much as I'm writing code all the time and everything. I think the other kind of sad thing is I've gotten to the point now where I'm doing it so much. I'm not writing a lot of code at this exact moment, but I'm surrounded by coding and engineering and software development all the time. That for me, kind of the last thing I want to do is sit down and write more code with him. And I'm not sure if that's going to hurt him or if that's going to be okay. I mean, he might just have to wait a few years until he has more of an interest himself. Kelly Schuster-Paredes: Well, I'm crossing my fingers, because the 8th grade, the curriculum is either a hit or miss. But we do everything in the 8th grade to get the last before they go off to the AP stuff and we lose half of them. We try to do everything fun, from making music to doing graphs to using AI full time, to, gosh, what else do we do? All kinds of stuff. A little bit of APIs, anything that's going to get their interest. So we try. So maybe one last hope. Pamela Fox: Yeah, I do think that's the right approach is lots of different forms of programming because, yeah, when people ask me about learning programming, I tell them, like, you gotta try it multiple times. Like, just if you take one programming course and you hate it, that doesn't mean you hate programming. It means you didn't like that particular form of programming in that course. Try different languages, try different use cases, try different teachers, and maybe in the end you just don't like programming. There are a few students that just don't, but many people, like, they just have to find like the right fit because there's so many different kinds of programming. Right? You've got more visual programming, you've got more analytical, more algorithmic. I'm actually the worst at algorithmic. I just talk to someone else when I want a new algorithm built, like architectural programming the most. Actually, that's why I like backends and databases and designing data tables and stuff. Yeah, you just gotta, that's a great thing to do with your students, is just try and expose them to all these different forms of programming and make them all accessible. Kelly Schuster-Paredes: I agree. Well, that's a good motivational statement to end on. I think Sean's drifting. What time is it now, Sean? Pamela Fox: One time. Sean Tibor: It's a little after 01:00 a.m. so, you know. But I do think this is a great place to wrap up. It's been an amazing conversation and we've really enjoyed chatting with you and talking with you and learning about your experiences and all the different fun things that you've been able to tackle in your career. Obviously more to come and more things to do and plenty of problems to solve and things to teach and everything. Hopefully we'll get a chance to do this again soon. Kelly, do we have any announcements this week? Kelly Schuster-Paredes: Well, not announcements yet, but I do want to just say you're a very motivational educator. We like to say to everyone, everyone's a teacher and everyone's a learner. And you do them both. And you do them both very well. And I really appreciate you coming on the show. As for announcement, stay tuned. I'm begging, I'm begging some people to come on. I keep emailing a couple people that I've have on my list, but we do have Brianna Kappa. I just went blank. Kaplan, I was right. Brian Compton coming on next week. So we've had a very filled summer session. So it's been really a lot of fun. We have a couple more coming, hopefully. Sean Tibor: So Pamela, if people want to get a hold of you or ask questions or follow what you're doing, where's the best place for them to reach you? Pamela Fox: My personal website is pamelafox and that has links to everything else. Sean Tibor: Nice. And I'm assuming it's a static site generated website. So if you want to see an example of how this could be used, it's a great place to. Pamela Fox: And if you're looking for any samples, just go to GitHub.com pamelafox. And I've got long list of samples on the front page. Kelly Schuster-Paredes: Very cool. Sean Tibor: Awesome. Kelly Schuster-Paredes: Check them out. Sean Tibor: Well, one last time. Thank you very much for joining us. It's been a pleasure. And so we'll wrap up here. So for teaching Python, this is Sean. Kelly Schuster-Paredes: This is Kelly signing on.