Change the future

Accepted Tutorials

A hands-on introduction to Python for beginning programmers

Jessica McKellar in Core Python (Language, Stdlib)

Beginning programmers: welcome to PyCon! Jumpstart your Python and programming careers with this 3-hour interactive tutorial. By the end, you'll have hands-on exposure to many core programming concepts, be able to write useful Python programs, and have a roadmap for continuing to learn and practice programming in Python. This class assumes no prior programming experience.

Wednesday 9 a.m.–12:20 p.m. in Great America Floor 2B R1

Faster Python Programs through Optimization

Mike Müller in High Performance Computing

Although Python programs may be slow for certain types of tasks, there are many different ways to improve performance. This tutorial will introduce optimization strategies and demonstrate techniques to implement them. Another of the objectives of this course is to give participants the ability to decide what might be the optimal solution for a certain performance problem.

Wednesday 9 a.m.–12:20 p.m. in Great America K

Python for Programmers: A Project-Based Tutorial

Alexandra Strong, Katharine Jarmul, Christine Cheung in Core Python (Language, Stdlib)

Are you a Python-curious programmer? Learn by writing your first project! You'll build a complete quiz creation web application. We will cover topics from data structures and classes, to debugging and testing.

Before the day of the workshop, you will need to have Python 2.7, CherryPy, IPython, and Jinja2 installed. Alternatively, you may arrive at the venue an hour early to receive assistance.

Wednesday 9 a.m.–12:20 p.m. in Great America J

IPython in-depth: high-productivity interactive and parallel python

Fernando Perez, Brian Granger, Min RK in Useful Libraries

IPython provides tools for interactive and parallel computing that are widely used in scientific computing, but can benefit any Python developer.

We will show how to use IPython in different ways, as: an interactive shell, an embedded shell, a graphical console, a network-aware VM in GUIs, a web-based notebook with code, graphics and rich HTML, and a high-level framework for parallel computing.

All materials for this tutorial can be found on our github repository

Wednesday 9 a.m.–12:20 p.m. in Mission City M3

A beginner's introduction to Pydata: how to build a minimal recommendation engine.

Diego Maniloff, Amr Hiram, Zach Howard in Big Data

In this tutorial we'll set ourselves the goal of building a minimal recommendation engine, and in the process learn about Python's excellent Pydata and related projects: numpy, pandas, and pytables.

A recommendation engine is a software system that analyzes large amounts of transactional data and distills personal profiles to present its users with relevant products/information/content.

Wednesday 9 a.m.–12:20 p.m. in Mission City M2

Digital signal processing through speech, hearing, and Python

Mel Chua in Other

Why do pianos sound different from guitars? How can we visualize how deafness affects a child's speech? These are signal processing questions, traditionally tackled only by upper-level engineering students with MATLAB and differential equations; we're going to do it with algebra and basic Python skills. Based on a signal processing class for audiology graduate students, taught by a deaf musician.

Wednesday 9 a.m.–12:20 p.m. in Mission City M1

Going from web pages to web apps with Python

Karen Rustad, Asheesh Laroia in Web Frameworks

This tutorial teaches basic web development for people who have some experience writing HTML, CSS, and front-end Javascript, but have little or no experience building an end-to-end web application.

Together we will build a basic social bookmarking application using Django!

Wednesday 9 a.m.–12:20 p.m. in Great America Floor 2B R3

Pyramid for Humans

Paul Everitt in Web Frameworks

Pyramid has emerged as a fast, modern, lightweight web framework. This lively, hands-on tutorial covers a little about a lot: practical introductions to the most common facilities. Fun, fast-paced, and most certainly not aimed at experts.

Wednesday 9 a.m.–12:20 p.m. in Great America Floor 2B R2

Code to Cloud in under 45 minutes

John Wetherill in Cloud

Learn how to deploy an python application to the cloud in under 45 minutes. In this hands-on workshop, you will get understanding the basics of cloud architecture (IaaS, PaaS, and SaaS), learn how to push your python application from github to the cloud in under 45 minutes, make it available for others to deploy, and integrate monitoring services.

Wednesday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R1

Rapid Web Prototyping with Lightweight Tools

Andrew Montalenti in Web Frameworks

Tutorial participants will build a real-world web application rapidly using lightweight tools, such as Flask, Jinja2, MongoDB, and Twitter Bootstrap. By building the apps from scratch using tools whose size matches the task at hand, participants will be able to churn out working applications by the end of the tutorial that can solidify their Python and modern web dev knowledge.

Wednesday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R3

Analyzing Social Networks with Python

Maksim Tsvetovat, Alex Kouznetsov, Jacqueline Kazil in Science

Social Network data is not just Twitter and Facebook - networks permeate our world - yet we often don't know what to do with them. In this tutorial, we will introduce both theory and practice of Social Network Analysis - gathering, analyzing and visualizing data using Python, NetworkX and PiCloud. We will walk the attendees through an entire project, from gathering data to presenting results.

Wednesday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R2

Hands-on Intermediate Python

Matt Harrison in Core Python (Language, Stdlib)

Want to up your Python game? Come learn how to write decorators, generators, list comprehensions, context managers and more. Bring a laptop with Python (2.x or 3.x) installed and come ready to program. You will leave knowing these intermediate constructs and how to write them. This always sells out so sign up early.

Wednesday 1:20 p.m.–4:40 p.m. in Great America K

Effective Django

Nathan Yergler in Web Frameworks

Django is a popular, powerful web framework for Python. It has lots of "batteries" included, and makes it easy to get started. But all of the power means you can write low quality code that still works. Effective Django means building applications that are testable, maintainable, and scalable. This tutorial will introduce attendees to Django with an emphasis on testing, maintenance, and scale.

Wednesday 1:20 p.m.–4:40 p.m. in Great America J

Python beyond the CPU

Andy Terrel, Travis Oliphant, Mark Florisson in High Performance Computing

Accelerators are the hottest tool in high performance computing but applicable to all fields. We present how to use Python's amazing ability to abstract away the low-level boiler-plate code turning accelerators from an exotic curiosity to a daily tool.

Wednesday 1:20 p.m.–4:40 p.m. in Mission City M3

Learn Python Through Public Data Hacking

David Beazley in Core Python (Language, Stdlib)

What's more fun than learning Python? Learning Python by hacking on public data! In this tutorial, you'll learn Python basics by reading files, scraping the web, building data structures, and analyzing real world data. By the end, you will have set up your Python environment, installed some useful packages, and learned how to write simple programs that you can use to impress your friends.

Wednesday 1:20 p.m.–4:40 p.m. in Mission City M2

Bayesian statistics made simple

Allen Downey in Big Data

An introduction to Bayesian statistics using Python. Bayesian statistics are usually presented mathematically, but many of the ideas are easier to understand computationally. People who know some Python have a head start.

We will use material from Think Stats: Probability and Statistics for Programmers (O’Reilly Media), and Think Bayes, a work in progress at

Wednesday 1:20 p.m.–4:40 p.m. in Mission City M1

A Gentle Introduction to Computer Vision

Katherine Scott, Anthony Oliver in Other

Do you want to create a script to warp your photos, scrape your photo archive for images of cats, or create a dart turret that follows your face? This tutorial will show you how to do this and a whole lot more with computer vision. The tutorial will be suitable for all levels of developers and is a great way for python novice’s to explore the world of computer vision.

Thursday 9 a.m.–12:20 p.m. in Great America Floor 2B R3

Documenting Your Project in Sphinx

Brandon Rhodes in Documentation

Projects can succeed or fail because of their documentation. When you write, you need to concentrate on your prose—not on how to get text rendered, indexed, highlighted, and cross-referenced. The Sphinx documentation framework exists to make these parts easy so you can focus on writing. This tutorial will use hands-on exercises to teach you to write, theme, and deploy documentation using Sphinx!

Thursday 9 a.m.–12:20 p.m. in Great America Floor 2B R1

Python Epiphanies

Stuart Williams in Core Python (Language, Stdlib)

This tutorial is for software developers who've been using Python with success for a while but are looking for a deeper understanding of the language. It focuses on how Python differs from other languages in subtle but important ways that often confuse folks, and it demystifies a number of language features that are sometimes misunderstood.

Thursday 9 a.m.–12:20 p.m. in Great America K

Shiny, Let's Be Bad Guys: Exploiting and Mitigating the Top 10 Web App Vulnerabilities

Mike Pirnat, David Stanek in Web Frameworks

The Internet is a dangerous place, filled with evildoers out to attack your code for fun or profit, so it's not enough to just ship your awesome new web app--you have to take the security of your application, your users, and your data seriously. You'll get into the mindset of the bad guys as we discuss, exploit, and mitigate the most common web app security flaws in a controlled environment.

Thursday 9 a.m.–12:20 p.m. in Great America J

Fully Test-Driven Web Development with Django and Selenium

Harry Percival in Testing

The concept: run through the official Django tutorial, but with full TDD.

So, Browser-based testing with Selenium + in-depth unit-testing;

TDD Discussions: what to test, what not to test;

Aimed at beginners (new to Django, TDD or Selenium)

Come prepared! you’ll need Git, Firefox, Python2.7, Django1.4 and Selenium installed

Thursday 9 a.m.–12:20 p.m. in Mission City M3

Python for Data Analysis

Travis Oliphant, Peter Wang, Benjamin Zaitlen in Big Data

Python has long played a role in analyzing large scale data. From tightly-knit super-computers running MPI-based applications to heterogeneous clusters woven together with scripts, Python has had a role to play in making it easier to processes data. This tutorial will cover the tried and true techniques as well as introduce new trends.

Thursday 9 a.m.–12:20 p.m. in Mission City M2

An Introduction to scikit-learn: Machine Learning in Python

Jake Vanderplas in Science

This tutorial will offer an introduction to the scikit-learn package and to the central concepts of Machine Learning. We will introduce the basic categories of learning problems, and explore practical examples based on real-world data, from handwriting analysis to facial recognition to automated classification of astronomical images.

Thursday 9 a.m.–12:20 p.m. in Mission City M1

Scripting: from Hard-drive to Github to PyPI

Matt Harrison in Best Practices/Patterns

How do you start a new project? How do you deliver a script to co-workers? How do you develop it with best practices? How do you use virtualenv and pip? How do you package it? How do you automate testing, building, uploading to PyPI?

This class will walk you through creating your own simple script and ending with something that is worthy of others.

Thursday 9 a.m.–12:20 p.m. in Great America Floor 2B R2

Contribute with me! Getting started with open source development

Jessica McKellar in Community

Want to contribute to a Python project or the core language, but not sure where to start?

Join us for 3 hours learning the nuts and bolts of open source contribution. By the end of this tutorial, you'll have the tools and practice to confidently contribute to your favorite projects.

Beginning programmers are welcome and encouraged!

Thursday 1:20 p.m.–4:40 p.m. in Mission City M1

Advanced Machine Learning with scikit-learn

Olivier Grisel in Big Data

This tutorial will offer an in-depth experience of methods and tools for the Machine Learning practitioner through a selection of advanced features of scikit-learn and related projects. This tutorial targets developers already familiar with machine learning concepts and scikit-learn who wish to learn how to apply those tools on larger datasets using multicore machines or distributed clusters.

Thursday 1:20 p.m.–4:40 p.m. in Great America J

Introduction to PyGame

Richard Jones in Gaming

This tutorial will walk the attendees through development of a simple game using PyGame with time left over for some experimentation and exploration of different types of games.

Thursday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R2

Intermediate Twisted: Test-Driven Networking Software

Itamar Turner-Trauring in Distributed Computing

Writing tests for networking code presents special challenges, which Twisted tries to address. In this tutorial you will implement a toy HTTP server using test-first methodology: first the tests are written, and then the code. You will learn how to write well-tested network applications using Twisted, and the general virtues of doing test-driven development.

Thursday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R1

Python 3 Metaprogramming

David Beazley in Core Python (Language, Stdlib)

Some of the most significant changes in Python 3 are related to metaprogramming. In this tutorial, I'll cover decorators, class decorators, descriptors, and metaclasses. However, the focus will be on idioms and examples that are only made possible using features that are unique to Python 3. For instance, making free use of function annotations, signatures, new metaclass features and more.

Thursday 1:20 p.m.–4:40 p.m. in Great America K

Applied Parallel Computing with Python

Minesh B Amin, Ian Ozsvald in High Performance Computing

In this tutorial we shall review three different and distinct approaches to parallel computing which can be used to solve problems in all manner of domains, including machine learning, natural language processing, finance, and computer vision. The first two approaches to be reviewed will be embarrassingly parallel in nature while the third approach will leverage fine-grain parallelism.

Thursday 1:20 p.m.–4:40 p.m. in Mission City M3

Introduction to SQLAlchemy

Mike Bayer in Databases/NoSQL

The goal of the tutorial is a broad-based introduction to SQLAlchemy, spanning the Core and ORM components as well as the systems that underlie them. The tutorial takes the "harder" approach teaching from fundamentals first, emphasizing details on how the library interacts with the database and SQL and concluding with an introduction to the ORM, providing a solid perspective for continued study.

Thursday 1:20 p.m.–4:40 p.m. in Great America Floor 2B R3

Wiring up Django Packages

Kenneth Love, Jacob Kaplan-Moss in Web Frameworks

You just finished the Django tutorial. What do you do now? You wire in Django Packages! Django is part of an ecosphere of over 20,000 packages, which can be leveraged to great effect. This tutorial wil teach the evaluation, use, and extension of third party Python and Django applications in your projects. This tutorial will be a lecture with a lot of detailed and annotated code examples.

Thursday 1:20 p.m.–4:40 p.m. in Mission City M2