Lowering the Barrier to Learning Programming

Lowering the Barrier to Learning Programming

Presented at Velocity 2014.

92dfeb863138a5a9c0453ed80f9c8c75?s=128

Pamela Fox

June 25, 2014
Tweet

Transcript

  1. Lowering the Barrier to Learning Programming Pamela Fox ! @pamelafox

    Hi! I’m Pamela. I work at Khan Academy, creating the computer programming and computer science curriculum. I also run GirlDevelopIt SF, where I teach weekly web development classes to local women. I’m interrupting your regularly scheduled back-to-back talks about web performance to talk about a topic that I bet all of you are secretly interested in, even if you didn’t know it: getting more people programming. Specifically, getting the next generation programming. They’ll be the people building fast websites 20 years from now, and hopefully will be tackling problems like making websites load fast from our colony on the Moon!
  2. We need more programming literacy. http://code.org/promote - You see, we

    need more students learning computer programming and computer science. The big obvious reason for that is because the number of computing jobs is projected to be way bigger than the number of CS graduates in the future, and that’s freaking a lot of software companies out. - But besides actual computing jobs, it’s the belief of many and myself that computing needs to be part of general literacy. People could converse more fluently with their tech-y colleagues if they understood how computers work. People could understand tricky issues like net neutrality and NSA privacy invasion better if they understood how computers work. - Even if a student goes on to major in non-CS, it’ll be a huge advantage to them and the world at large if they have a basic understanding of computing.
  3. How can we increase those numbers more quickly? We’re all

    about numbers in performance land. And the numbers in those graphs aren’t good. How can we increase those numbers, getting more students learning programming when they’re in K-12?
  4. How did I get into programming? 5 Computers T1 Line

    Supportive Parents Let’s look at how I got into programming, to see if it offers any insights. Or just to look at my sweet style. I was raised by two computer science parents, had 5 computers in my home, and a T1 line. I know, you’re drooling.
  5. I was lucky. In case it wasn’t obvious: I was

    incredibly fortunate. I had privilege up the wazoo, and I used the shit out of it.
  6. We can’t afford to rely on luck anymore. ! We

    need to lower the barriers. - I was lucky, and many of you probably got lucky in some way, and thankfully we’re here today as programmers. - But we can’t afford to rely on luck anymore, because we need to get programming to way more people. - We HAVE to lower the barriers. We have to enable the un-lucky to get in the door.
  7. You can help. There are many ways we can lower

    the barriers, and there are many ways that all of YOU can help lower them. Let’s go through each of them and discuss.
  8. Barrier #1: Access to a Computer http://www.donorschoose.org/donors/search.html?keywords=%22computer%20science%22 Many students don’t

    have computers at home (and if they do, they’re not as programming-friendly, like iPads), and many classrooms don’t have computers or enough computers. Yes, it’s possible to teach computing concepts without a computer, like with CS Unplugged activities, but you can only go so far. If you want to help, you can donate your old computers to friends’ kids and local classrooms, or you can login to DonorsChoose.org, find a project that’s funding classroom computers to learn programming, and donate to them. You can filter by location or topic or poverty level, depending on what’s nearest and dearest to your heart.
  9. Barrier #2: Local Dev Setup Many students don’t have their

    own computers. Many students are using ChromeBooks/iPads/Phablets. …therefore, we need more online programming environments Many students struggle with setting up a local environment - For many of us, programming probably starts with setting up some sort of local environment: downloading an IDE, installing the latest Node.js, making sure our Python is up to date. - Now, you may consider that a necessary ritual in proving yourself as a programmer, but I mostly consider it a barrier. - Someone who is new to programming shouldn’t have to get over that hump of setting up a local environment. It gets too frustrating too fast. - And, many students don’t even have the option to setup things locally: they might be using shared computers with limited install rights, they might be using ChromeBooks or iPads or newfangled Phablets. - To lower that barrier, we need online programming environments that can run in any browser (even back to old IEs. But not IE6, never IE6).
  10. Online Programming Environments Khan Academy Codecademy REPL.it PyTutor JSBin JSFiddle

    CodePen CodeSkulptor Blockly GA Dash Snap Scratch JavaScript Block-based Python HTML/CSS/JS Thimble Multi Fortunately, there are quite a few online programming environments. I’m quite proud of our real-time, interactive JavaScript and ProcessingJS environment on Khan Academy. But there are tons more: JSBin, GA Dash, Codecademy, Repl.It, CodeSkulptor, SCRATCH. Many of them build-in debugging tools to help students find problems in their code, and many of them have ways that you can save and share with a community.
  11. Online Programming Environments What are we missing? Curriculum/Community Hardware Languages

    Use Cases C++ Objective-C Fortran Swift ChucK But I think we’re just scratching the surface, because there’s a lot that you still can’t do online. What if you wanted to learn to hack hardware, but you couldn’t afford it yet, or couldn’t afford hardware for the whole class? Wouldn’t it be cool if there was an online emulator for Arduinos and PIs and Robotics? Or perhaps you want to learn Objective-C or Swift to make iPhone apps? I’ve seen one site that’s tackled Objective-C online, but whoah, it’s slow - compiling Obj-C in the browser and streaming an interactive iPhone app is in a performance class of its own! And what if you want to learn to make a full-on 3d game? We’ve seen Brendan Eich demo running Doom in the browser, which is cool and all, but what about PROGRAMMING Doom in the browser? Now that’s impressive. And for all of these things you could program, you should also ideally have a curriculum and a community around them. An online programming environment is great, but it’s wayyyyy better when it guides you through how it works and helps you learn from others. I’m hoping that we’ll be able to tackle some of these on Khan Academy, but we can’t do it all. Maybe some of you can start or contribute to an open source project for whatever type of programming you’re passionate about?
  12. Barrier #3: CS Classes In 28 out of 50 states,

    CS does *not* count towards math/science graduation requirements. 9 out of 10 high schools don’t offer CS classes. http://code.org/promote Some students, if they have access to a computer and a way to learn programming, will go at it on their own. But for many students, their lives are busy, and they are far more likely to learn something if they have a dedicated time in their schedule for it, and a teacher that will encourage them to keep going. Unfortunately, in more than half of the 50 states, computer science classes do NOT count towards math/science graduation requirements, and 9 out of 10 high schools do not offer CS classes.
  13. Barrier #3: CS Classes http://code.org/promote You can help. Visit code.org/promote,

    select your state, and sign a petition or email a local politician to get their support for making CS count. On a more local level, you can write letters to high schools near you and recommend CS- especially if you’re a concerned parent yourself. Offer to help them understand what that means, and why it’s important.
  14. Barrier #3: CS Classes http://www.coderdojooc.com/ https://www.flickr.com/photos/medialab-prado/ http://code.org/learn/local It takes a

    while to change schools and find CS teachers. In the meantime, there are a ton of coding after-school clubs popping up to create a classroom- like environment with teachers, mentors, and support. You can go to code.org/learn/local to find clubs located near you, and if you can’t find one, start one! It’s okay if you don’t like teaching, because there are online courses like Khan Academy that will do the teaching for you. You just need to create the space and provide the support. I’ve been doing that at our local CoderDojo, and wow, it’s soooo fun to see a room full of middle schoolers get pumped up about programming. It’ll remind you of what you love about it.
  15. Barrier #4: Social encouragement http://static.googleusercontent.com/media/www.google.com/en/us/edu/pdf/women-who-choose-what-really.pdf ! 1. Parental encouragement (regardless

    of occupation) 2. Familial encouragement 3. Peer encouragement ! Most important forms of encouragement: Encouraging kids to learn to code isn’t just something that’ll make you feel good about yourself - it might just be the most important factor encouraging them to keep going with programming and CS. According to a recent Google research survey, the #1 factor for determining whether females go into a CS major is whether they were encouraged by their parents, family, or peers - in that order. So, yes, encourage them!
  16. Barrier #6: Career Misconceptions http://static.googleusercontent.com/media/www.google.com/en/us/edu/pdf/women-who-choose-what-really.pdf Especially true for females. “Research

    reports that students finishing high school have a difficult time seeing themselves as computer scientists since they do not have a clear understanding of what computer science is and what a computer scientist does.” https://www.edsurge.com/n/2014-01-07-want-more-women-in-tech-fix-misperceptions-of-computer-science Even if we manage to introduce students to programming, we do also want to get a bunch of them pursuing it as a career, and according to research, most students have no idea what it is we even do with a CS degree. And for females especially, they don’t realize that they can have social impact on the world with a CS degree.
  17. Barrier #6: Career Misconceptions www.khanacademy.org/meet-the-computing-professional www.madewithcode.com/mentors www.youtube.com/playlist?list=PLjqPzIdAG_dRdcgSf6ulG494o50M6Z_vm Computing is Everywhere

    Meet the Computing Professional Made With Code We can fix those misconceptions by sharing what we do. On Khan Academy, we have a series highlighting computing professionals across the industry- game developers, product managers, mobile app makers, physics programmers, and more. Plus there are the videos from Computing is Everywhere and Made with Code, which visualize the intersection of computer science with diverse industries like dancing and basketball and Pixar! You can share those with the kids you know, and if you know a teacher, encourage them to highlight one a week.
  18. That’s not an exhaustive list. There are many more barriers,

    and many vary based on demographic. http://static.googleusercontent.com/media/www.google.com/en/us/edu/pdf/women-who-choose-what-really.pdf Listen, I only had 10 minutes for this talk. There’s no way I could talk about all the barriers that we could possibly lower, and go into the myriad ways that they differ across demographics. But hopefully I gave you some insight into what’s happening and where you can help.
  19. Your goal: ! lower the barrier for one kid to

    learn to code. Pamela Fox @pamelafox ! Velocity 2014 I leave you with a simple goal: find a way to lower the barrier for one kid to learn to code. Tell me how you did it. Tell others how you did it. ! Thank you!