Sessions at PyCon US 2013 about Python

Wednesday 13th March 2013

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.

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.

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.

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.

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!

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.

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.

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 http://thinkbayes.com.

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.

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.

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.

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.

Thursday 14th March 2013

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.

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.

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 installedhttp://www.tdd-django-tutorial.com/

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.

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.

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.

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.

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.

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.

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!

Friday 15th March 2013

One of the turning points in history was when manufacturing embraced intermediate production. By creating simple components that can be integrated into complex products, manufacturers are able to build faster and cheaper, achieving better quality. In this tale of developer meets engineer,I describe how I'm using Python's inheritance model to bring this manufacturing reality to life in source code.

This talk is an introduction to the Internet's structure and protocols through fun experiments from the Python perspective. We'll use Python libraries like Scapy and Twisted to explore what happens at a networking level as you surf the Web, how coffee shop Internet access works, and more.

This talk is an introduction to the practice of exception handling, aimed at those without a heavy CS background or years of experience, and who are thus unfamiliar with the technique. Novices to Python will learn Python-specific techniques that make use of built-in exceptions and the context manager, as well as unusual but Pythonic ways of managing the flow control of their program.

As activity accelerated from just a few thousand activities per day to hundreds of millions, Instagram needed a reliable, scalable messaging infrastructure to distribute work and messages. In this talk, I'll jump from a crash course in the abstract concepts of queueing into the implementation details & hard-earned know-how from experience building massive-scale Python-based systems.

While Java and C# use static type declarations to eliminate ambiguity, the Python programmer must survive through sheer clarity and consistency in naming variables.

We will explore the deep unspoken conventions that the Python community has developed and honed over two decades to make Python code readable and meaningful within the freedom that a dynamically-typed language grants us.

C++ brought exceptions to mainstream programming; Java goes further with checked exceptions. But are exceptions the one way to report all errors? Scala and Go suggest there is more than one kind of error, so there should be more than one kind of error reporting, and different responses to errors. I’ll show the Scala and Go approaches to the error problem, and how to apply this to Python.