Teaching Programming – A Call to Action

Lori_and_Allie_Learn_Together

by Jen Looper

Recently, a video featuring Bill Gates, Mark Zuckerberg, and other tech luminaries circulated in social media.  Its message was simple: schools aren’t teaching programming and something needs to be done about it. According to Code.org, the site that sponsored the video, while there is a shortage of computer programmers to fill open positions, only 1 in 10 schools have curricula in place to actually teach kids how to code.

Existing Educational Resources

Thankfully, while there are many paid online courses, the sheer number of free initiatives like CodeAcademy and Coursera, that have been launched recently is astonishing (though Coursera isn’t specifically about coding, it does offer many courses on the topic). However, these are not necessarily intended for a younger audience. Some courses of study, like KidsRuby and CodeAcademy After School, are geared towards younger audiences and designed to allow independent study in a group setting.

For students who want to brush up on introductory concepts, there are tutorials on KhanAcademy. Are you looking for a university level course? Enroll into an MIT classroom at OpenCourseWare or courses at many other prestigious universities such as McGill, Georgetown, Harvard, Berkeley, and Wellesley at EdX.

These initiatives are wonderful, and offer great benefits to novice programmers wanting to ramp up their skills as well as experienced developers wanting to brush up on previously-acquired experience. But what about students who have not yet found the ‘spark’ or motivation to learn a programming language? What if they have never considered a career in a technical discipline? What if they have not yet learned to embrace their inner geek? How can we, as programmers, perform effective outreach to invite students of all “makes and models” into the fold?

Programmers Teaching Programming

Many programmers nowadays want to teach. We love what we do, many of us have kids of our own, and we believe that we have the ability to impart both our enthusiasm and our acquired skills in the field. But to be scrupulously honest, there are not very many programmers who truly know how to teach, especially if we’re talking about teaching young kids in a K-12 setting.

Without many hours of student teaching leading to a certification in elementary, secondary, or high school pedagogy, programmers may find it challenging to walk into a classroom and attempt to engage 10-20 young students. Conversely, many teachers may feel uncomfortable teaching programming, even using tools like Code Academy After School which, although it is intended to be a self-study course, needs a teacher to control the classroom experience.

To further complicate matters, with today’s emphasis on students’ individual learning styles, anyone who places him or herself in front of a classroom will be asked not to create a one-size-fits-all learning experience but rather an engaging program that will work for all students. As Sanford Bogage, a Middle School math teacher in Wellesley, MA who leads the after school Tech Team noted, “Kids come from many different areas. Some are interested in games while others want to know more about how computers work. Some want to learn more about programming…Some students are just interested in “playing around” and merely want to get around any safety nets or firewalls to play games.”

So, for the brave programmer who wants to venture into the realm of teaching, I have three rules of thumb:

Know your audience

When I launched the Wellesley Code Academy, I began the first class with a Powerpoint lecture about the ins and outs of CoronaSDK and the Lua language that we would be writing. I promptly put the class to sleep and lost a lot of goodwill. Jorge Sanchez, an inspiring programmer and teacher in Los Angeles, had a similar experience: “The least effective strategy I found is to be too technical. During my first workshop I had a very technical introduction filled with graphs and numbers and it was obvious that I was losing them. I was lecturing instead of teaching them, so I ditched the powerpoint and we got to some hands-on work, and that probably saved the day.”

The big challenge for us as professionals with corporate experience and college degrees is to step back and remember that we are teaching kids and young adults – my students were as young as 13. Even for a college audience, set expectations based on the group dynamic and makeup. Dr. Brian Burton, a seasoned university teacher in Abilene, TX, observed, “Expectations are one of the most important things to set before the teaching begins. Tell them what they are going to learn, teach them, then tell them what they learned.” GirlDevelopIt‘s curriculum is a great example of how teaching for a specific audience can be effective, as is RailsBridge.

Know your own goals

Once you have established what your audience will be – a Middle School after school club, a college-level workshop integrated into a curriculum, or a seminar series at your local Boys or Girls Club – set your own goals. You want to teach programming, so fix on a programming task to teach while completing a project.

Dr. Burton states, “You have to get them busy building programs immediately. Lots of programs. If they do tiny programs, building on what you show them, they learn to apply the concepts…To become a successful programmer, you must code, code, code!”

For example, at Wellesley Code Academy, our goal was to create a game with a repeatable game loop. During our four week session, I also snuck in a little lecture about creating a game design document, and demonstrated creating a sprite sheet, but the major push was to complete the simple ‘alien shooter’ game.

Jorge Sanchez writes how he used Arduinos to help teach underprivileged students microcontrollers and embedded programming (Word doc). Although the goal of his class was simply to get “a light on their Arduino board to blink after typing some unknown (to them) commands in their computers,” the real takeaway was much deeper. By working with Arduinos, explaining the life of a professional programmer, and presenting himself as someone who has made a successful career in the field, Jorge was able to open an exciting vista to these kids: “Most had low aspirations of going to college, either from lack of means or lack of support. I’d like to think that I talked a couple of them into at least considering higher education.”

For students never exposed to the workings of computers, starting a Raspberry Pi club might work. Developing Rails apps to send content to a Little Printer would be a fun way to introduce both Rails and working with APIs. Craft curricula that will allow you to “chunk” tasks to progressively introduce best practices in programming at a low level and inspire students to think about a future in the field.

Know that success may come slowly…

…but what you do now will have a major impact on the future of your students.

Michael Weingarden, a teacher at Newbury Park High School in LA, integrates programming into his Algebra and Statistics classes and founded an award-winning robotics club. He expresses regret that “students that weren’t formerly programmers still weren’t that excited about programming” but celebrates those students who “get it.” Sanford Bogage says, “I am always surprised by how much some kids are willing to do on their own. Once I show them some of the basic tools, they can quickly build on that knowledge and quickly surpass my own.”

Every teacher I have interviewed remarked with pleasure that “aha” moment when the light bulb went on for even just one student – and therein lies the payoff. We need to realize that our efforts in this area will never entirely fail. The more outreach we can do to the most diverse communities will benefit us all in the future.

As teachers, we can also help each other. To this end, I’ve created a clearinghouse on my website for teachers to submit lesson plans at http://www.ladeezfirstmedia.com/teaching-resources/.

I’d love to hear what has worked in your classroom. Please feel free to share by contacting me at jen@ladeezfirstmedia.com.

(image source: Wikimedia)

4 Comments

  1. the_new_mr said:

    Just wanted to mention http://coderdojo.com/ It’s taking off well and seems to have a good formula for engaging young people. Though it’s focussed more on the people who already want to do it rather than getting people to have that initial spark.

    • Jen Looper said:

      Thank you for bringing coderdojo to my attention. It seems like a great resource and I’ll add it to my list. I think the mentoring concept is very good.

      Jen

  2. Niall O'Doherty said:

    Brilliant!

    I’ve been helping college level students with their programming modules using their assignments as the requirements to define what it was we were trying to accomplish, our objective.

    The approach was simple. Show them how to firstly break down the requirements and think about how they were going to solve each problem. Then walk them through it including coding in a pair programming type scenario so they end up with a working solution that they understand.

    Although not classroom based I found this approach helps them answer the question of “so where do I start” and shows them how to get from A to B whilst thinking like a programmer.

    In all, the common factor was that they were being taught the syntax of a language but not the fundamentals of programming itself.

    • Jen Looper said:

      Excellent suggestion. Pair programming is another great technique that can help students at all levels to improve. And “thinking like a programmer”, engaging what we used to call the “left brain” – can be done in many diverse ways…for example even when in the kitchen, breaking down a recipe to show how process creates programs. Thanks for your input!

*

*

Top