EDUCATORS Luke Petschauer Bellevue School District @lukewrites Good evening everybody. My name is Luke Petschauer, and I’m a third grade teacher in Bellevue. I’ve done my best to make the following as relevant, concise, and, hopefully, useful as possible. I originally gave this talk at this year’s [2016’s] PyCon, at the Education Summit. At PyCon in Montreal I met a number of people who had tried to start or facilitate programming classes at public schools. Unfortunately, most of the folks I talked to found it very hard to get buy-in from the schools, or ran into so many bureaucratic walls that they gave up. Today I’m hoping to provide some developer-to-educator middleware, I guess. I’ll be talking about what we can do to teach Python to students who are typically under- served or overlooked and not served at all. I’ll also be talking about how to align the awesome stuff you want to teach with what educators are thinking about in their classrooms. The BSD has been developing a bunch of open-sourced CS curriculum, and I’ve been teaching CS as an after school activity, so I’d like to share some of what we’ve learned in doing that.
What materials do you need to teach K-12 students to code? #PyEduQ2 3. What might keep students from participating in your class? #PyEduQ3 …but don’t worry, I won’t make you talk to anyone. Even though that goes against all of my third grade teacher instincts. I’ve got three questions I’d appreciate you thinking about and then answering. If you could take out your phone and get on twitter, and answer each of these three in separate tweets, labeled with the appropriate tag. Let’s take two minutes. I’ll keep time.
Do It The first part of my talk is about designing your programming class to be as equitable as possible. And I’m using the term equity quite deliberately here. Equality tends to be a sort of “stock art” word; lip service to higher ideals. <click>
equal support to all students is insufficient; students from different backgrounds have vastly different needs. Instead we need an equitable, or fair/need-based, distribution of support that tries to ensure that all students learn and grow as much as possible.
Do It The ideal, of course, is equity of outcome. We all too often laugh this off (“Not everyone is going to become a doctor/lawyer/programmer”), but when we do this we’re choosing the wrong outcomes to focus on. Instead perhaps we should have outcomes that describe growth and learning. So anyway, today I’m going to use the term equity quite a bit – it’s something I’d suggest you use in your conversations with educators because it carries quite a bit of weight in public education and, frankly, it’s what we need to make sure all children have an opportunity to succeed. So when we talk about equity vs equality there are these cartoons we usually show…
urge that you strive to make your programming class as liberatory as possible, which is to say your classes should be designed around identifying and removing as many causes of inequity as you can, and empowering your students to do battle against the inequities they perceive. So on this point, what I’m talking about it specifically geared towards teaching coding to underrepresented groups, for free, in public venues. As an outsider to the education world, you can have a significant advantage in noticing parts of the status quo that may keep children from participating or limiting how meaningful their participation is. Don’t be afraid to ask questions about anything you perceive to be a barrier. The most obvious are requiring proportional racial, linguistic, and gender representation. In our programs we have insisted on a 50/50 boy:girl ratio, even if that means having a smaller class. We have also intentionally worked at recruiting students with home languages other than English. Schools have translation services – use them! I’d like to briefly mention some barriers to access that I’ve witness negatively affect my students.
urge that you strive to make your programming class as liberatory as possible, which is to say your classes should be designed around identifying and removing as many causes of inequity as you can, and empowering your students to do battle against the inequities they perceive. So on this point, what I’m talking about it specifically geared towards teaching coding to underrepresented groups, for free, in public venues. As an outsider to the education world, you can have a significant advantage in noticing parts of the status quo that may keep children from participating or limiting how meaningful their participation is. Don’t be afraid to ask questions about anything you perceive to be a barrier. The most obvious are requiring proportional racial, linguistic, and gender representation. In our programs we have insisted on a 50/50 boy:girl ratio, even if that means having a smaller class. We have also intentionally worked at recruiting students with home languages other than English. Schools have translation services – use them! I’d like to briefly mention some barriers to access that I’ve witness negatively affect my students.
urge that you strive to make your programming class as liberatory as possible, which is to say your classes should be designed around identifying and removing as many causes of inequity as you can, and empowering your students to do battle against the inequities they perceive. So on this point, what I’m talking about it specifically geared towards teaching coding to underrepresented groups, for free, in public venues. As an outsider to the education world, you can have a significant advantage in noticing parts of the status quo that may keep children from participating or limiting how meaningful their participation is. Don’t be afraid to ask questions about anything you perceive to be a barrier. The most obvious are requiring proportional racial, linguistic, and gender representation. In our programs we have insisted on a 50/50 boy:girl ratio, even if that means having a smaller class. We have also intentionally worked at recruiting students with home languages other than English. Schools have translation services – use them! I’d like to briefly mention some barriers to access that I’ve witness negatively affect my students.
urge that you strive to make your programming class as liberatory as possible, which is to say your classes should be designed around identifying and removing as many causes of inequity as you can, and empowering your students to do battle against the inequities they perceive. So on this point, what I’m talking about it specifically geared towards teaching coding to underrepresented groups, for free, in public venues. As an outsider to the education world, you can have a significant advantage in noticing parts of the status quo that may keep children from participating or limiting how meaningful their participation is. Don’t be afraid to ask questions about anything you perceive to be a barrier. The most obvious are requiring proportional racial, linguistic, and gender representation. In our programs we have insisted on a 50/50 boy:girl ratio, even if that means having a smaller class. We have also intentionally worked at recruiting students with home languages other than English. Schools have translation services – use them! I’d like to briefly mention some barriers to access that I’ve witness negatively affect my students.
I don’t think the book is closed when we say “The class is free, anyone can come.” The issue of after-school activities is a difficult one. For many students, there is no option to stay after school because they either need to be taken to childcare, or because (like many of my students) they need to go home and take care of younger siblings. It’s probably beyond any of our powers to organize an activity bus for an after-school programming class we want to teach. But are there any afternoons in the week when the school has an activity bus? Perhaps the programming kids could hitch a ride. Or you can think about it a different way. My students who receive free or reduced-price lunches all show up well before school starts for breakfast. Do you like to get up at some cruel hour to go for a run? Would the school be interested in have a coding breakfast club twice a week?
maybe rather than holding an after-school class at school, you could go to where the kids are: at after-school childcare at the Y, or the Club, or the Library. Even if it doesn’t mean running your program at the Y or the Club or a local library, perhaps these organizations would be willing to send a person or a van back to pick kids up after your club is over. This isn’t necessarily a discussion you can have with the organizations, but it is something worth mentioning to your partner teacher, the PTA, or any other collaborator.
maybe rather than holding an after-school class at school, you could go to where the kids are: at after-school childcare at the Y, or the Club, or the Library. Even if it doesn’t mean running your program at the Y or the Club or a local library, perhaps these organizations would be willing to send a person or a van back to pick kids up after your club is over. This isn’t necessarily a discussion you can have with the organizations, but it is something worth mentioning to your partner teacher, the PTA, or any other collaborator.
maybe rather than holding an after-school class at school, you could go to where the kids are: at after-school childcare at the Y, or the Club, or the Library. Even if it doesn’t mean running your program at the Y or the Club or a local library, perhaps these organizations would be willing to send a person or a van back to pick kids up after your club is over. This isn’t necessarily a discussion you can have with the organizations, but it is something worth mentioning to your partner teacher, the PTA, or any other collaborator.
maybe rather than holding an after-school class at school, you could go to where the kids are: at after-school childcare at the Y, or the Club, or the Library. Even if it doesn’t mean running your program at the Y or the Club or a local library, perhaps these organizations would be willing to send a person or a van back to pick kids up after your club is over. This isn’t necessarily a discussion you can have with the organizations, but it is something worth mentioning to your partner teacher, the PTA, or any other collaborator.
I actually had a group of kids in front of me, sitting at computers: typing. In my teaching, one of the clearest indicators of socioeconomic status is the ability to type. (Rant here about computer-based, mandatory standardized testing that require kids to type…) Of course, this is not to imply in any way that the students who hunt and peck on the keyboard aren’t computer literate. Many of my students don’t have a computer at home, but do have a tablet, usually something inexpensive that runs Android. I think we all know or can imagine how difficult it is type (or, horrors, write code) on an 8” tablet. (Cognitive load of figuring out where letters on the keyboard are when you’re already trying to remember how to code.)
to get you in, but so you know who you will be working with! Demographics! (Language, F&R, racial & cultural diversity.) What computers are available in the school. There will be lots of blocking of resources, it’ll be hard to install anything. What’s the least you need to do well? (pythonanywhere, interactivepython.org, IPython notebooks, write lessons for PyCharm Edu?) K-6 kids almost certainly can’t do email registration, be forewarned. Unplugged activities for when all the technology fails.
to get you in, but so you know who you will be working with! Demographics! (Language, F&R, racial & cultural diversity.) What computers are available in the school. There will be lots of blocking of resources, it’ll be hard to install anything. What’s the least you need to do well? (pythonanywhere, interactivepython.org, IPython notebooks, write lessons for PyCharm Edu?) K-6 kids almost certainly can’t do email registration, be forewarned. Unplugged activities for when all the technology fails.
to get you in, but so you know who you will be working with! Demographics! (Language, F&R, racial & cultural diversity.) What computers are available in the school. There will be lots of blocking of resources, it’ll be hard to install anything. What’s the least you need to do well? (pythonanywhere, interactivepython.org, IPython notebooks, write lessons for PyCharm Edu?) K-6 kids almost certainly can’t do email registration, be forewarned. Unplugged activities for when all the technology fails.
to get you in, but so you know who you will be working with! Demographics! (Language, F&R, racial & cultural diversity.) What computers are available in the school. There will be lots of blocking of resources, it’ll be hard to install anything. What’s the least you need to do well? (pythonanywhere, interactivepython.org, IPython notebooks, write lessons for PyCharm Edu?) K-6 kids almost certainly can’t do email registration, be forewarned. Unplugged activities for when all the technology fails.
to teach. In my experience, what will “sell” best to educators is if you link your coursework to standards. So, learn to read and love the Common Core.
have in school. ➤ “I am Washington State Patrol cleared to volunteer in a school.” So here’s our cheat sheet of high points you’ll probably want to address when approaching a school. And with that, we can move on to actually teaching programming.
have in school. ➤ “I am Washington State Patrol cleared to volunteer in a school.” ➤ The value of learning programming. (Yuuge.) ➤ How coding links to students’ education. (Common Core.) So here’s our cheat sheet of high points you’ll probably want to address when approaching a school. And with that, we can move on to actually teaching programming.
have in school. ➤ “I am Washington State Patrol cleared to volunteer in a school.” ➤ The value of learning programming. (Yuuge.) ➤ How coding links to students’ education. (Common Core.) ➤ What the school needs to do. (Not much.) ➤ “As long as the school network will let student computers go to pythonanywhere.com, we will be fine.” So here’s our cheat sheet of high points you’ll probably want to address when approaching a school. And with that, we can move on to actually teaching programming.
have in school. ➤ “I am Washington State Patrol cleared to volunteer in a school.” ➤ The value of learning programming. (Yuuge.) ➤ How coding links to students’ education. (Common Core.) ➤ What the school needs to do. (Not much.) ➤ “As long as the school network will let student computers go to pythonanywhere.com, we will be fine.” ➤ What materials you’ll need. (Not many.) So here’s our cheat sheet of high points you’ll probably want to address when approaching a school. And with that, we can move on to actually teaching programming.
have in school. ➤ “I am Washington State Patrol cleared to volunteer in a school.” ➤ The value of learning programming. (Yuuge.) ➤ How coding links to students’ education. (Common Core.) ➤ What the school needs to do. (Not much.) ➤ “As long as the school network will let student computers go to pythonanywhere.com, we will be fine.” ➤ What materials you’ll need. (Not many.) ➤ How you will ensure equity of access and opportunity, and questions you have about what supports the school would suggest. So here’s our cheat sheet of high points you’ll probably want to address when approaching a school. And with that, we can move on to actually teaching programming.
program we are teaching them to think in a new way; to approach and solve problems in a certain way, learning different tools (like loops) and when to use them. And at the same time we’re asking them to learn a novel, formal way of giving these directions. We’re asking learners to learn two discrete, difficult skill sets. The psychologist Anders Ericsson, who wrote the excellent book Peak, has stressed the importance of of developing mental representations of domain-specific knowledge and skills. The idea is, as you develop these mental representations of K/skills, you are able to then apply it more and more adeptly. So, what I’m asking you to consider tonight is separating the “computer science” from the programming. Hold off on doing the Python until the kids have started to get a grasp on attacking problems like a programmer. Let them develop those mental representations. <reward/Automate the Boring Stuff…> To finish out the talk I’m going to describe what’s worked for me, but the tldr; is:
tools that improve one's ability to think and reason about real-world situations and also allow a person to monitor and evaluate his or her own performance, spot mistakes, and figure out what sort of training will help eradicate those mistakes" When we’re teaching kids to program we are teaching them to think in a new way; to approach and solve problems in a certain way, learning different tools (like loops) and when to use them. And at the same time we’re asking them to learn a novel, formal way of giving these directions. We’re asking learners to learn two discrete, difficult skill sets. The psychologist Anders Ericsson, who wrote the excellent book Peak, has stressed the importance of of developing mental representations of domain-specific knowledge and skills. The idea is, as you develop these mental representations of K/skills, you are able to then apply it more and more adeptly. So, what I’m asking you to consider tonight is separating the “computer science” from the programming. Hold off on doing the Python until the kids have started to get a grasp on attacking problems like a programmer. Let them develop those mental representations. <reward/Automate the Boring Stuff…> To finish out the talk I’m going to describe what’s worked for me, but the tldr; is:
that their efforts lead to something that they find rewarding.” When we’re teaching kids to program we are teaching them to think in a new way; to approach and solve problems in a certain way, learning different tools (like loops) and when to use them. And at the same time we’re asking them to learn a novel, formal way of giving these directions. We’re asking learners to learn two discrete, difficult skill sets. The psychologist Anders Ericsson, who wrote the excellent book Peak, has stressed the importance of of developing mental representations of domain-specific knowledge and skills. The idea is, as you develop these mental representations of K/skills, you are able to then apply it more and more adeptly. So, what I’m asking you to consider tonight is separating the “computer science” from the programming. Hold off on doing the Python until the kids have started to get a grasp on attacking problems like a programmer. Let them develop those mental representations. <reward/Automate the Boring Stuff…> To finish out the talk I’m going to describe what’s worked for me, but the tldr; is:
that their efforts lead to something that they find rewarding.” When we’re teaching kids to program we are teaching them to think in a new way; to approach and solve problems in a certain way, learning different tools (like loops) and when to use them. And at the same time we’re asking them to learn a novel, formal way of giving these directions. We’re asking learners to learn two discrete, difficult skill sets. The psychologist Anders Ericsson, who wrote the excellent book Peak, has stressed the importance of of developing mental representations of domain-specific knowledge and skills. The idea is, as you develop these mental representations of K/skills, you are able to then apply it more and more adeptly. So, what I’m asking you to consider tonight is separating the “computer science” from the programming. Hold off on doing the Python until the kids have started to get a grasp on attacking problems like a programmer. Let them develop those mental representations. <reward/Automate the Boring Stuff…> To finish out the talk I’m going to describe what’s worked for me, but the tldr; is:
make other students read, interpret, and act upon it. I love Python because it’s readable; let’s get kids used to reading it, then we can crack the whip and have them all conforming to PEP8.
Mindstorms: Children, Computers, and Powerful Ideas Finally, I’d like to leave you with this quote from the book Mindstorms. I’m sure many of you have read it, but if you haven’t…well, we all are Amazon Prime member, right? (Or maybe you go to Elliot Bay Books, I shouldn’t assume.) Papert invented the programming language LOGO to be a teaching tool, and each time I read or reread his work I find that he observed, described, and analyzed aspects of learning that I have only begun to perceive in the haziest of ways. Papert’s idea that coding can be a vehicle creating self-actualized learners has rung true to me in my experience as an educator, and I’d highly suggest becoming familiar with his work as you plan your own coding courses.
Mindstorms: Children, Computers, and Powerful Ideas Finally, I’d like to leave you with this quote from the book Mindstorms. I’m sure many of you have read it, but if you haven’t…well, we all are Amazon Prime member, right? (Or maybe you go to Elliot Bay Books, I shouldn’t assume.) Papert invented the programming language LOGO to be a teaching tool, and each time I read or reread his work I find that he observed, described, and analyzed aspects of learning that I have only begun to perceive in the haziest of ways. Papert’s idea that coding can be a vehicle creating self-actualized learners has rung true to me in my experience as an educator, and I’d highly suggest becoming familiar with his work as you plan your own coding courses.
Mindstorms: Children, Computers, and Powerful Ideas Finally, I’d like to leave you with this quote from the book Mindstorms. I’m sure many of you have read it, but if you haven’t…well, we all are Amazon Prime member, right? (Or maybe you go to Elliot Bay Books, I shouldn’t assume.) Papert invented the programming language LOGO to be a teaching tool, and each time I read or reread his work I find that he observed, described, and analyzed aspects of learning that I have only begun to perceive in the haziest of ways. Papert’s idea that coding can be a vehicle creating self-actualized learners has rung true to me in my experience as an educator, and I’d highly suggest becoming familiar with his work as you plan your own coding courses.