Python Bootcamp
An intense course for programmers who want to learn the
essential elements of Python programming.
"Very informative - well worth the time." (Review from on-site training, Feb. 2007)
"Dave's slides are by far the best, most-thorough, and polished slides of any lecture I've attended, college, professional training, or otherwise." (Review from Big Nerd Ranch, May, 2007).
"The concepts were great and useful in real world applications." (Review from Big Nerd Ranch, Nov. 2007)

Python Bootcamp at Kloster Eberbach, Germany (Organized by Big Nerd Ranch, July, 2007).
Overview
This course, designed for software developers, scientists, and
engineers, is a comprehensive introduction to the Python programming
language, standard library, and Python programming techniques. Although
the course assumes no prior experience with Python, the course is
strongly focused on real-world applications including data processing,
systems integration, network programming, reliability, and testing.
In addition, you will learn about programming with objects,
and other essential aspects of Python programming.
Syllabus
The course is typically taught in either a 3 or 4 day configuration
with the first two days devoted to the "Introduction to Python" and
"Object Oriented Programming" sections. The remaining course days are taken
from the "Systems Programming" and "Network Programming" sections.
1. Introduction to Python
An introduction to Python for programmers who are new to
Python, but generally familiar with programming in some other
language. By the end of the day, students will be familiar with most
of the major Python features needed to start writing useful programs.
|
A Tutorial Introduction
|
An introduction to the Python programming language. Covers details of
how to start and stop the interpreter and write programs. Introduces
Python's basic datatypes, files, functions, and error handling.
|
|
Working with Data
|
A detailed tour of how to represent and work with data in Python.
Covers tuples, lists, dictionaries, and sets. Students will also
learn how to effectively use Python's very powerful list processing
primitives such as list comprehensions. Finally, this section covers
critical aspects of Python's
underlying object model including variables, reference counting, copying,
and type checking.
|
|
Program Structure, Control Flow, and Functions
|
More information about how to organize larger programs and how to reuse code.
Covers more advanced aspects of Python control-flow and expands upon how to
define and use functions. Also covers scoping rules, documentation strings,
anonymous functions, exec, and eval.
|
|
Modules and the Standard Library
|
How to organize programs into modules and
further details of Python variable scoping rules and namespaces. This section concludes with a overview of some of the most
commonly used library modules and instructions on how to install
third party library modules.
|
2. Object Oriented Programming
This section covers the details of defining and working with new objects in Python. In addition, testing, debugging,
and software development practice are covered.
|
Classes
|
An introduction to object-oriented programming in Python. Describes how to create new objects,
overload operators, and utilize Python special methods.
|
|
Inside the Python Object Model
|
A detailed look at how objects are implemented in Python. Major topics include
the definition of objects, the object lifecycle, object representation, attribute
binding, inheritance, and special properties of classes including
properties, slots, private attributes, static methods, and class methods.
|
Working with Objects
|
A more detailed look at how to effectively design objects in Python.
Topics primarily focus on how to encapsulate data and algorithms
into classes and common design patterns used in the Python standard library.
|
|
Object Persistence
|
How to save, restore, copy, and serialize objects. Covers the
marshal, pickle, shelve, and struct modules. The programming API used
to interface with relational databases such as MySQL, Oracle, and
Sybase is also discussed.
|
|
Documentation, Testing, and Debugging
|
This section discusses many isses that are considered important to Python software development.
This includes effective use of documentation strings, program testing using both the
doctest and unittest modules, and effective use of assertions. The Python debugger and profiler are also described.
|
3. Python Systems Programming
The major focus of this section is using Python to interact with both common operating system features
and with other applications.
|
Iterators, Generators, and Closures
|
Covers the iteration protocol, iterable objects, generators, generator
expressions, and concepts related to "lazy" evaluation of Python statements.
A major focus of this section concerns the use of iteration for solving
various problems in systems programming (e.g., processing large datafiles and
infinite data streams).
|
Working with Text
|
A more in-depth look at how to efficiently parse and generate text
data in Python. Topics include string splitting, string stripping,
string joining, and template strings. This section also covers the re
module, Python's module for regular expression pattern matching and
substitution.
|
|
Files and the file system
|
A more detailed look at file I/O in Python. Topics include how to work with files and directories in
a portable manner as well as unicode I/O. Also covers useful modules for working with a wide variety of
common file formats such as zip, gzip, bzip, tar, and CSV.
|
|
Working with Processes
|
This section covers details of the Python interpreter process including command line options, environment
variables, and I/O. The problem of interacting with other processes
and applications from Python is then discussed with detailed coveraged of the subprocess module.
|
|
Concurrency
|
Detailed coverage on different options for writing concurrent programs in Python. Topics include threads, message queues,
co-routines, and co-processes. Special emphasis will be given to a technique of writing concurrent programs that is
highly portable and easy to adapt to a variety of different system configurations.
|
4. Network and Internet Programming
A detailed overview of network programming features of Python. There are three major themes of this section. First, you
will learn the basics of networking and how to write your own networked applications using the socket module and related
support modules. Second, client-side programming for a wide variety of common Internet protocols is covered including
HTTP, FTP, and XML-RPC. Finally, attention is given to common data formats encountered when writing Internet applications.
|
Network Fundamentals
|
An introduction to the basic concepts of network programming. Covers the essential details of TCP/IP and the essential
concepts of socket programming.
|
|
Server side programming
|
Modules related to the implementation of Internet servers. Covers the SocketServer module. In addition, you
will learn how to quickly write HTTP and XML-RPC servers.
|
|
Client-side programming
|
Detailed coverage of modules that allow you to interact with a wide variety of standard Internet services. These
include HTTP, FTP, SMTP, and XML-RPC. Special attention will be given to the urllib2 module that allows Python
to interact with web servers.
|
|
Web Programming
|
Essential elements of web programming in Python. Topics include the
HTTP protocol, request parsing, form handing, cookies, CGI scripting,
WSGI, templating engines, and an introduction to web frameworks.
Note: This section is not specific to any particular Python web framework---the
topics are focused on universal concepts.
|
|
Internet Data Handling
|
An overview of modules related to processing common Internet data formats. Major topics include Unicode, HTML, and XML.
|
5. Optional Topics
The following special topics can be added to a course on demand.
|
Configuration and logging
|
This section focuses on two important problems that are often overlooked in
systems programming classes---namely how
to deal with application configuration files and how to add a logging capability
to a program. Special attention is given to the ConfigParser and logging modules.
|
|
Python extension building
|
An introduction to writing C/C++ extensions to Python. The section focuses on the mechanics of creating and compiling an
extension module. The essential elements of creating hand-written extensions to Python are described. This is followed by an introduction
to common Python extension building tools including Swig, and ctypes.
|
|
Embedding Python
|
How to embed the Python interpreter into other applications.
|
Instruction Format
The course is a mix of presentation slides with hands-on programming
exercises. Typically, class time is evenly split between these two
activities.
Prerequisites
Although no prior experience with Python is required, this course
assumes that students have prior experience with some other
programming language such as C++, Java, or Perl. This is not an
introductory class on how to program! Participants should already
be familiar with the basic concepts of programming such as variables,
statements, control-flow, functions, arrays, data structures, and common
algorithms (e.g., searching, sorting, etc.).
In addition, it is assumed that students already know how to work with
files, folders, editors, command shells, environment settings,
internet connections, IDEs, and other essential aspects of using a
computer for software development.
About the Instructor
All courses are taught by David Beazley, author of the Python
Essential Reference. 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. Dave is a nominated
member of the Python Software
Foundation. In addition to his work with Python, Dave has extensive experience
with C,C++, and assembly language programming. An academic CV is available upon request.
Logistics
The class is best suited for 10-15 students. A larger class size
is possible, but I will not teach a class that has more than 25 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 (Python 2.5). In addition, some of the hands-on exercises related to
Python Systems Integration (Section 5) will require the use of a C/C++ development
environment.
Course materials are provided in electronic form (PDF) for duplication. There
are approximately 140 printed pages of handouts for each day of instruction.
Although the class notes are extensive, all attendees are encouraged
to bring a Python book for reference. Absolute beginners may want to
consider a book such as "Learning Python" or "Dive Into Python." If
you already have some Python experience, consider a book such as the
"Python Essential Reference" or "Python in a Nutshell."
2009 Schedule and pricing
Classes are normally scheduled 8-24 weeks in advance. However,
classes in the Chicago area can often be scheduled on shorter notice
depending on my availability.
The cost of a class with 12 students is $2400/day plus travel and
expenses. Additional students can be added for $200/student per day.
Discounts are available for classes offered in the Chicago area and
prepaid classes. I am available to teach internationally, but for such
classes, you will be billed for business class airfare.
2008 Availability
The following calendar outlines my current training schedule for 2008.
| January, 2008 | 1. On-site training (Chicago). 1/14-1/16
2. University of Chicago. 1/3, 1/10, 1/17, 1/24, 1/31
3. On-site training (Wisconsin). 1/28-1/30
|
| February, 2008 | 1. On-site training (Chicago). 2/11-2/13
2. University of Chicago. 2/7, 2/14, 2/21, 2/28
|
| March, 2008 |
1. On-site training (Chicago). 3/3-3/5.
2. University of Chicago. 3/6, 3/13.
3. PyCon'08 conference. 3/13-3/16.
4. On-site training (Chicago). 3/17-3/19.
|
| April, 2008 | 1. Unavailable. 4/1-4/7.
2. On-site training (Mountain View). 4/21-4/24
3. On-site training (Boston). 4/29-5/1 |
| May, 2008 | 1. Big Nerd Ranch, Frankfurt, Germany. 5/5-5/9
2. On-site training (Pasadena). 5/13-15.
3. On-site training (Chicago). 5/20-5/22.
|
| June, 2008 |
1. On-site training (Maryland). 6/2-6/6.
2. Big Nerd Ranch, Atlanta, Georgia. 6/9-6/13
3. On-site training (Pasadena). 6/17-6/19
4. On-site training (Chicago). 6/25-6/27
|
| July, 2008 | Available (*) - New! |
| August, 2008 | Aavailable (*) - New! |
| September, 2008 |
1. On-site training. Chicago. 9/8 - 9/10
2. On-site training. Pasadena. 9/29 - 10/1
3. Available (*)
|
| October, 2008 | 1. On-site training. Raleigh. 10/8 - 10/10
2. On-site training. Pasadena. 10/21 - 10/23
3. Available (*)
|
| November, 2008 | 1. Big Nerd Ranch, Atlanta, Georgia. 11/10-11/14
2. On-site training. Pasadena, 11/18-11/20.
3. Available (*)
|
| December, 2008 | 1. Big Nerd Ranch, Frankfurt, Germany. 12/08 - 12/12
2. Available (*)
|
(*) News (July 1, 2008): I'm pleased to announce an expansion
of training opportunities for 2008 by offering the Python bootcamp in
partnership with Dan Klein. Dan is a well known teacher and Unix
programming expert. However, he is probably best known as the
Education Director for the USENIX association where he has spent the
last 18 years organizing the tutorial programs for their various
technical conferences. I'm excited to have Dan on board and think that
he will bring a unique perspective to Python training.
Contact
For more information, you can contact me by sending email to "dave" at "dabeaz.com".
|