Last week, I had the pleasure of attending the PyCon 2016 Education Summit. The Python community has a long-running, deep committment to education:
Python is used widely in academia, the Python Software Foundation pioneered the Computer Science for Everyone intitiave in the ‘90s, and local meetup groups like our own Philadelphia Python User Group continue to have a strong educational outreach effort. The Education Summit (or EdSummit for short) represents a unique opportunity for educators of all stripes to gather and discuss challenges, share techniques, and discuss Python. It’s a “can’t miss” event for me at PyCon.
The EdSummit is held before the main PyCon conference and is an invite-only event for about 100 of the 3,000+ PyCon attendees. Before I go any further, I feel I should call out the people who make this possible. A big thanks to this year’s organizers Chalmer Lowe and Jessica Ingrassellino for putting on a great one-day event that is part lecture, part un-conference. Thanks to Naomi Ceder for founding the conference four years ago. And, of course, thanks to PromptWorks for generously sending me to the EdSummit and main conference.
Here’s where I decide what this blog post is about. I could easily do a report on the excellent speakers. Or maybe I could tell you about the inspiring and engaged educators I met at the EdSummit; quick aside – librarians are amazing! Maybe I could give you a long list of the innovative Python tools and resources discussed during the event.
Nope, that would be predictable. Instead, I’m going to tell you about tensions that arose across multiple presentations and why those themes are important.
Thinking Computationally vs. Thinking Pythonically
When I was a kid, computer literacy meant knowing how to turn on your desktop computer and use a word processing application. Computers now come in many forms and have many more uses but, more importantly, we are now able to collect, publish, and store data on an unprecedented scale. Now computer literacy looks more like code literacy. Code literacy is such an important concept that The White House and The Association for Computing Machinery (the granddaddy organization for scholarly and professional computing) have major initiatives underway to foster what is becoming an essential skill in the 21st Century.
So, we have Python, this language with robust support within academia and lots of tools like the BBC micro:bit behind it to make learning to program easier and fun. One tension that kept arising was whether we should emphasize learning the features of the Python language or focus on Python as a tool to enable students to think about general programming concepts.
My takeaway was that it depends on your students. Computational thinking is essential regardless of audience and language, but thinking Pythonically might not be useful in all cases. For college students studying computer science and working professionals that want to build their own tools, thinking Pythonically is a good compliment to computational thinking. In the case of younger students, the goal may simply be to succeed at a task, not optimize that task to adhere to unique features and libraries within Python.
Code Literacy vs. Becoming a Programmer
As an educator and coder of some sort, it’s easy to teach as if you are trying to create more coders. It’s tempting to throw students into the deep end with regular expressions, big-O notation, and understanding the finer points of the heap. This was a tension that kept arising: what does it mean to be code literate?
This is such a fine line to walk as an instructor. You want students to be knowledgeable and to use Python with skill and finesse, but don’t want to overload and dishearten them. Several presenters talked about using themes like programming in Python for Minecraft, an exploration of Martian math, and creating arcade games in Python to keep students learning.
The EdSummit educators seemed to conclude that giving students a theme that they are passionate about keeps them exploring and deepening their skillset. They may not become professional coders, but at least they will get enough exposure to realize that programming and CS concepts can be used for many applications and across problem domains.
Exposure vs. Sustainable Impact
Another recurring theme during the EdSummit was the tension between providing exciting one-off educational events and making a lasting impact. It’s so important to expose students to coding as a creative pursuit and essential professional skill, and that software development is an achievable career. This is where the librarians come in.
One of my favorite talks during the EdSummit was, oddly, a five minute lightning talk by Q Goss a librarian and one of a handful of RaspberryPi Certified Educators in the US. She is creating innovative week-long programming events for underserved kids at her branch of the Detroit Public Library System. One of her many excellent points was that you should talk about what you are creating – you’ll be surprised who steps up to help. A donor gifted RaspberryPis to her program after hearing about it. She also advised that you should display your stuff, because you’ll be surprised who is interested. In her case, the kids workshop spawned interest among adult patrons, and there is even a request for a drone workshop.
All of this is to say, exposure is the first step toward sustainable impact. Another one of the EdSummit speakers, Rebecca Conley, emphasized that dialogue is an essential first step toward making a lasting impact. What kind of skills and opportunities are missing? What barriers are in your way? What does meaningful help look like? It’s that critical discussion and empathy-building phase that sets the stage for success and meaningful change.
Nicholas Tollervey, the EdSummit keynote speaker and a Python Software Foundation Fellow, put it best when he said:
Asking what sort of education and learning our community supports is how we decide what sort of community we become. For it is through education and learning that we engage with our future colleagues, friends and supporters.
These tensions exist for a reason – they are a sign of growth. The Python community is deliberately responding to a changing student population, multiple sources for education and outreach, and a shifting definition for code literacy. To meet these needs, we have to think critically about Python education and how we want to grow our community.
I look forward to resuming this conversation and more at the PyCon Education Summit in 2017. In the mean time, there is a community of dedicated educators, a broad palette of existing tools and resources, and user-friendly Python to lead the way.