Yes, you can teach.

You should have some Python programming experience to teach this material, but you do not necessarily need teaching experience.

The curriculum we use at PyCon is taught in a presentation style - that is, we use a slide deck with speaker notes, projected from a computer that also has Python/Idle installed (so that we can alternate between showing the slides and demonstrating coding tasks).

You should be somewhat comfortable speaking in front of a room and enjoy interacting with kids.

If you've never taught younger students before, though, or are not sure how to explain some Python concepts to beginners, the speaker notes can function as a script to help you along.


Don't just read code examples at your students, though. Interact with them. Ask questions, even if it's just asking them to guess what the results of an expression might be. Bring a little energy and a smile. Engage with your students one-on-one when you can. They'll surprise you with some intelligent questions, and might even teach you a thing or two.

The classroom materials

Take some time to read over the slides - the latest class materials are available in Keynote and PowerPoint formats at this GitHub repository:

Remember, you're always free to fork and remix them in whatever way you wish - edit the content to personalize it for your class.

And if you have questions, feel free to leave comments on the repository, or contact the administrators of this site at

There are a few organizing steps you'll need to take to get your class off the ground - we'll cover those a bit later. But for now, here's some advice for when the day of your class finally arrives.

Take your time

Relax. Make friends with your students. Keep an eye on how they're doing. Rely on your teaching assistants and your own observation to determine if they're overwhelmed or bored**.

** How to tell if a thing is overwhelming - if the kids look panicked, slow down; if they start to glaze over, you're good, just move on.

Throughout the slide deck, there are code examples for the students to run in Idle:

  • Give students plenty of time to type and run those examples for themselves.
  • Once you're sure everyone has finished, switch over to Idle and demonstrate the examples for them.

Be sure and give the students time to catch up after each exercise. Young students won't be able to type as quickly as you do. Younger students may struggle and then give up if you move too quickly, and older students may rush ahead, so keeping an even pace can be a bit of a balancing act. After each new exercise, do something like getting a show of hands to confirm that everyone's getting it before you move on to the next topic.

If you do add code examples to the slides, try not to add things like long variable names or very complex expressions that take a long time to type. Running code examples for themselves is the best way to develop an understanding, but for kids, the physical act of typing can be a time-consuming exercise that draws focus from learning. Again, it's a balancing act, but something you'll get a feel for quickly.

Take breaks

Build in plenty of breaks for bathroom and snacks throughout the day. This class is a lot to take in over the course of a single day, and every student needs time for their brains to rest.

You should also give yourself some time to regroup, and give students some free hack time to experiment with their new skills.

You'll probably find that the most fun parts of the day are those moments in between teaching, when you can interact with the kids one on one and find out what they're really excited about doing with their newfound knowledge.

Don't sweat the small stuff

There's only so much you can teach in a day, and kids need time beyond the classroom to work with and absorb all these new concepts. Keep your mind on the big picture: You're teaching kids how to communicate with their computers, and that can be a really big deal to someone who's new to programming.

Your students won't walk away with a thorough knowledge of Python. And that shouldn't be your goal. What you are doing is planting the seed, lighting a spark that will:

  1. show kids how attainable and possible programming is
  2. motivate them to want to learn more