[ ADVANCED PYTHON PROGRAMMING ]

A one-of-a-kind advanced course for Python programmers who want to know more about how to apply Python's most advanced features to a variety of practical problems in systems building. This course is particularly well suited for programmers who are building application frameworks, integrating Python with other software, or using Python for distributed computing.

Overview

This is a serious course designed for programmers who already have significant experience with the Python language. Starting with some core material related to network programming, the course advances into thread programming, multiprocessing, I/O handling, and distributed computation. In exploring these topics, you will learn about a variety of other advanced Python topics including decorators, metaclasses, context-managers, generators, coroutines, abstract base classes, the buffer interface, logging, performance optimization, asynchronous I/O, and accessing C code with the ctypes library. Even the most advanced Python programmers will walk away from this class with new insight and ideas.

Syllabus

The course is taught in a 2 or 3-day configuration. The 3-day course covers network programming and moves into concurrency and distributed computing. The 2-day course omits the network programming section and starts with thread programming. Be advised that Day 2 and Day 3 are significantly more advanced than Day 1 so as a general rule, the first day is recommended as a good "warm up" for material to follow.

Day 1 (optional):

  1. Network Fundamentals and Socket Programming
  2. High-level networking modules
  3. Internet data handling
  4. Web Programming
  5. Advanced Networking

Day 2:

  1. Thread programming
  2. Message Passing and Data Serialization
  3. Multiprocessing

Day 3:

  1. Distributed Programming
  2. Advanced I/O handling
  3. Concurrent programming with generators and coroutines

A Detailed Syllabus provides more information on the topics covered. Note: Although this course covers a variety of network-related topics, it is not a course on web programming, web frameworks, or using Python to build web sites.

Instruction Format

The course is designed to be taught on a 9-5 schedule with a one hour lunch break. This course consists of both lecture slides and hands-on programming exercises, with most of the time spent programming. Participants should plan on spending 4-5 hours each day working on exercises.

Prerequisites

This course assumes a working knowledge of Python programming. Students should already know know to write and debug programs and be familiar with core language features such as functions, classes, modules, and the most commonly used modules in the standard library. Given that the topics in this course are heavily focused on networking and systems programming, students are well-advised to have some prior background working with processes, threads, and network programming.

About the Instructor

All courses are taught by David Beazley, author of the Python Essential Reference and nominated member of the Python Software Foundation. David has been an active member of the Python community since 1996 and is the creator of several Python-related packages including SWIG and PLY. From 1990-1997, he worked part time at Los Alamos National Laboratory where he helped pioneer the use of Python on massively parallel supercomputers. From 1998-2005, he was an assistant professor in the department of computer science at the University of Chicago where he taught courses in operating systems, networks, and compilers. In addition to his work with Python, Dave has extensive experience with C, C++, and assembly language programming. Dave has a Ph.D. in computer science and a M.S. in mathematics. An academic CV is available upon request.

Logistics

The class is best suited for 10 or fewer students. A larger class size is possible, but due to the advanced nature of the material it should not exceed 16 students.

You are responsible for providing the instruction space, a video projector, and machines where students can work on the programming exercises. The course can be taught on Windows, Linux, or Mac OS-X. However, all machines must be equipped with the latest version of Python (currently Python 2.6) and may required a small set of third-party libraries.

2010 Schedule and pricing

Classes are normally scheduled 8-32 weeks in advance. However, classes in the Chicago area can often be scheduled on shorter notice depending on availability.

The cost of a class with up to 10 students is $3000/day plus travel and expenses. Additional students can be added for $300/student per day. Course handouts are charged at $50/student.

Classes can be taught internationally. However, for classes involving more than 10 hours of round-trip air travel, you will be billed for business-class airfare.

Contact

For more information, you can contact me by sending email to "dave" at "dabeaz.com".


Copyright (C) 2005-2026, David Beazley