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

Lowering the Barrier to Learning Programming

Lowering the Barrier to Learning Programming

Presented at Velocity 2014.

Pamela Fox

June 25, 2014
Tweet

More Decks by Pamela Fox

Other Decks in Technology

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!

    View Slide

  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.

    View Slide

  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?

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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).

    View Slide

  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.

    View Slide

  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?

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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!

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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!

    View Slide