Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bringing Python to the Classroom

Bringing Python to the Classroom

Tips for Pythonistas and Educators. Presented at the PyCon 2016 education summit and for Seattle's PuPPY Python user group.

Luke Petschauer

September 14, 2016
Tweet

Other Decks in Education

Transcript

  1. BRINGING PYTHON 
 TO THE CLASSROOM TIPS FOR PYTHONISTAS AND

    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.
  2. TONIGHT: 1.Equity 2.Logistics 3.Teaching So here’s what we’ve got going

    on tonight. But before I get on my high horse and start talking, I’ve got an assignment for you…
  3. 1. Why is teaching programming in schools important? #PyEduQ1 2.

    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.
  4. What You’ll Do, How You’ll Do It, And Why You’ll

    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>
  5. You know, “I treat everyone in my classroom equally.” Giving

    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.
  6. What You’ll Do, How You’ll Do It, And Why You’ll

    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…
  7. With a sort of embarrassing earnestness, I would like to

    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.
  8. With a sort of embarrassing earnestness, I would like to

    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.
  9. With a sort of embarrassing earnestness, I would like to

    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.
  10. With a sort of embarrassing earnestness, I would like to

    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.
  11. Equity: Transportation home When we think about equity of access,

    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?

  12. Equity: Where are the students you want to reach? Or

    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.
  13. Equity: Where are the students you want to reach? Or

    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.
  14. Equity: Where are the students you want to reach? Or

    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.
  15. Equity: Where are the students you want to reach? Or

    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.
  16. Here’s another equity issue that never occurred to me until

    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.)
  17. Language home language dual language programs They are learning a

    programming language in a second language. How are you going to scaffold things for them so that they can
  18. BEFORE YOU START TEACHING Background check Collaborating teacher: Not only

    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.
  19. BEFORE YOU START TEACHING Background check Collaborating teacher: Not only

    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.
  20. BEFORE YOU START TEACHING Background check Collaborating teacher: Not only

    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.
  21. BEFORE YOU START TEACHING Background check Collaborating teacher: Not only

    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.
  22. So now let’s get into what, exactly, you might want

    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.
  23. People dislike Common Core. Many of the critics don’t seem

    to know what they’re so afraid of; others, like Diane Ravitch, make quite a bit of sense.
  24. People dislike Common Core. Many of the critics don’t seem

    to know what they’re so afraid of; others, like Diane Ravitch, make quite a bit of sense.
  25. People dislike Common Core. Many of the critics don’t seem

    to know what they’re so afraid of; others, like Diane Ravitch, make quite a bit of sense.
  26. People dislike Common Core. Many of the critics don’t seem

    to know what they’re so afraid of; others, like Diane Ravitch, make quite a bit of sense.
  27. People dislike Common Core. Many of the critics don’t seem

    to know what they’re so afraid of; others, like Diane Ravitch, make quite a bit of sense.
  28. Common core standards are broken up by grade level, subject

    (Math/Language Arts), and skill. Teachers often present them to kids in “I can…” statements, so they’re a bit easier to grok.
  29. Common core standards are broken up by grade level, subject

    (Math/Language Arts), and skill. Teachers often present them to kids in “I can…” statements, so they’re a bit easier to grok.
  30. Common core standards are broken up by grade level, subject

    (Math/Language Arts), and skill. Teachers often present them to kids in “I can…” statements, so they’re a bit easier to grok.
  31. YOUR PITCH SHEET 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.
  32. YOUR PITCH SHEET ➤ Why you’re an OK person to

    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.
  33. YOUR PITCH SHEET ➤ Why you’re an OK person to

    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.
  34. YOUR PITCH SHEET ➤ Why you’re an OK person to

    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.
  35. YOUR PITCH SHEET ➤ Why you’re an OK person to

    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.
  36. YOUR PITCH SHEET ➤ Why you’re an OK person to

    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.
  37. MAKE PROGRAMMING EASY TO LEARN 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:
  38. MAKE PROGRAMMING EASY TO LEARN “Mental representations…are, in essence, mental

    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:
  39. MAKE PROGRAMMING EASY TO LEARN “Children are motivated by seeing

    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:
  40. MAKE PROGRAMMING EASY TO LEARN “Children are motivated by seeing

    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:
  41. NATURAL LANGUAGE ↓ PROGRAMMING LANGUAGE This means, talk it out.

    Write pseudocode, even if it’s something that doesn’t look at all like pseudocode, like a numbered list.
  42. But Ozobots also have a block-based code language with five

    levels of complexity. Hey, look at how there’s a progression in how complicated these code blocks are!
  43. Pseudocode leading to real code. Write instructions in pseudocode and

    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.
  44. “ Debugging is the essence of intellectual activity. Seymour Papert


    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.
  45. “ Debugging is the essence of intellectual activity. Seymour Papert


    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.
  46. “ Debugging is the essence of intellectual activity. Seymour Papert


    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.