Python in education
Python is at the center of fundamental changes in computing education. Tour the features that make Python appropriate for education, and learn how an active Python community supports educational outreach.
Programming is cool.
Why?
Because programmers are obviously black-clad kung-fu ninjas with “hacker aliases” who always take the red pill, type really fast to “crack databases,” and save the world from renegade artificial intelligences.1 Or perhaps programmers are geeky wunderkind who make billions of dollars by founding social networks that have more users than most countries have citizens.2 Then again, programmers are those socially awkward yet rather useful savants who are always so keen to fix your computer (but never let them explain what they’re doing or they’ll bore you with overly enthusiastic technobabble).3 Also, why is programming such a “boy” thing?
Stereotypes stop people from doing stuff.
This applies as much to programming as any other aspect of life. If your view of a programmer is as ridiculous as the stereotypes listed above, then programming is likely to appear as an intimidating form of technical magic or a dull obsession for misfit boys who avoid the great outdoors.
But there is hope: the damaging prejudices and misconceptions listed above can be overturned through education. Organizations such as the RaspberryPi Foundation and One Laptop Per Child (OLPC) project see programming as a means of empowerment. A new generation of programmers are learning to be enterprising digital makers and creators rather than merely passive users. Even politicians are waking up to the realization that the long-term viability of their country’s economy and public services fundamentally depends on citizens’ ability to excel in the digital realm. And so educators have been tasked to change the school computing curriculum from an uninspiring Microsoft Office how-to into an education that includes programming, taking control of the computer and making it do things where the only encumbrance is one’s imagination.
There is a programming language whose creator has explicitly said that his aim is to make computer programming for everybody. That person is Guido van Rossum, and the programming language is Python.
Python Is Everywhere
A quick glance online suggests that Python is the language du jour for teaching programming. Yet Python is, and has been for a while, one of the world’s most popular programming languages in industry as well. Every day, without realizing it, you probably use software that is written using Python. Python is used by companies to write all sorts of applications. Google, NASA, Bank of America, Disney, CERN, YouTube, Mozilla, The Guardian—the list goes on of companies and organizations of all sizes in all sectors of the economy that use Python.
Why is Python so popular?
I aim to answer this question from an educational perspective. One might distill the answer into the following points:
- Resources
- There are lots of resources for learners of all ages and levels. These range from traditional textbooks to websites that offer online self-paced courses in Python programming. With the advent of the Raspberry Pi and OLPC projects, everyone can get hold of affordable hardware that runs Python.
- The Language’s Design
- Python is easy to learn, intuitive, pleasing to the eye and comes with a plethora of libraries that allow programmers to build all sorts of applications addressing different domains and activities. It’s easy to read: if you squint a little, most Python code is comprehensible even to people who wouldn’t call themselves programmers (for example, Python is very popular among scientists).
- Community
- Python has a large, diverse and proactive community associated with it. The Python Software Foundation (PSF) is a community-led charitable organization whose mission is to promote, protect and advance the Python programming language.
- Momentum
- Being popular is itself a strength and a virtuous circle that reinforces Python’s popularity. New projects and initiatives are announced all the time. For example, the author is aware of several yet-to-be publicly announced Python-in-education projects. The online version of this document will be updated to reflect these announcements, so be sure to check http://www.oreilly.com/programming/free/python-in-education.csp.
What’s in It for You?
If you’re reading this report, I imagine you’re a programmer, teacher, student, parent or other interested party. You’re probably wondering how this report will help you understand Python’s place in the recent resurgence of interest in computing education. Assuming the categories of reader listed above, here’s what’s in it for you.
You’re a Programmer
If you already know how to write code, then you might believe that education is of little interest to you.
But wait!
If you’re a good programmer, you also know that part of the vocation of software development involves learning new technology and, when in a position of responsibility, teaching junior colleagues how your software works. Put simply, to be a programmer is to be both a teacher and a student.
To describe programming so children understand you indicates that you know your craft at a deep level. For instance, you appreciate what to leave in or how much to leave out of an explanation. You have clear enough mental models of the concepts of programming that you can accurately analogize and summarize. Furthermore, you explain yourself in simple and easy-to-understand language that demonstrates your own clarity of thought. Finally, finding the opportunities to practice these skills on young coders is a sign of moral and professional value: you’re putting something back into the wider community and have shown initiative.
This report describes how you and your colleagues may continue your professional development by supporting the next generation of programmers.
You’re a Teacher
Well done! Before becoming a programmer, I was a senior secondary school teacher in the United Kingdom. It was the most difficult yet also most rewarding job I have ever had to do. Teaching is the one profession that creates all the other professions. It is a calling (you’re certainly not doing it for the money or perks) and, as a practitioner of this remarkable profession, if you’re looking for help and support in teaching programming, then you’ve made a great choice by investigating Python.
This report describes where to learn about Python (so you’re no longer one page ahead of the class), get involved with and find support from the wider Python community and become acquainted with the story of Python—an interesting subject in itself when teaching computing.
You’re a Student
It often seems daunting to learn new skills and knowledge. But rest assured, Python is both relatively easy to learn and a real programming language used widely in industry. Python comes with “batteries included”: there are plenty of libraries of code written in Python that allow you to build all sorts of amazing and incredible applications.
Python’s community is a welcoming and friendly place. Remember, what you get out of the community is directly related to what you put in. Don’t just sit there, do something! Jump in and get involved.
This report explains where to learn Python (so you’re several pages ahead of your teacher in programming classes) and how to get in touch with the wider community.
You’re a Parent
Someone you care about is obviously passionate about computers and programming. That’s a good thing—if they make it their career, they’re joining a profession that has a high demand for quality engineers.
This report gives you enough information so you can best support your loved one. Hopefully, it will allay any fears and uncertainties you may have and answer some of your questions about learning to program with Python.
You’re Interested in Learning More
You’ve probably heard about the computing revolution in schools. Maybe you’ve heard of the Raspberry Pi. In any case, Python is at the center of these fundamental changes in computing education.
This report arms you with the facts and information you need to understand where Python sits within this context.
Acknowledgments
Many thanks to Amelia Watkiss, Samuel Tollervey and William Tollervey for the moment of adventuring into Python captured on the front cover of this document. Thanks also to Carrie Anne Philbin, Naomi Ceder and Tim Golden for invaluable feedback on an early draft. The picture of a fractal tree built in Minecraft was provided by the extraordinarily creative Martin O’Hanlon. Finally, Meghan Blanchette has, yet again, been a very patient editor.