[ PRACTICAL PYTHON PROGRAMMING ]
A comprehensive course for mastering the essential elements of Python programming
and using it to solve real-world problems.
This course, designed for professional 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 practical applications
including scripting, data analysis, and systems administration.
The goal of the course is to cover the Python language and critical
library modules for writing useful programs. A major focus of the
course is on using Python to perform data analysis (data structures,
performing calculations, file I/O, file formats, text processing, etc.)
- Introduction to Python.
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 Organization and Functions.
More information about how to organize larger programs into functions. A major focus
of this section is on how to design functions that are reliable and can be easily
reused in other settings. Also covers technical details of functions including
scoping rules and documentation strings.
- Modules and Libraries. How to organize programs into modules and details on
using modules as a tool for creating extensible programs. Concludes with a tour
of some of the most commonly used library modules including those related to system
administration, text processing, subprocesses, XML parsing, binary data handling, and databases.
In addition, an optional section on using numpy and matplotlib to process
numeric data can be taught depending on student interest.
- Classes and Objects. An introduction to object-oriented programming in Python. Describes how to create new objects,
overload operators, and utilize Python special methods. Also covers basic principles of object oriented programming including
inheritance and composition.
- Inside the Python Object System. A detailed look at how objects are implemented in Python. Major topics include
object representation, attribute binding, inheritance, memory management, and special properties of classes including
properties, slots, and private attributes.
- Testing, Debugging, and Software Development Practice.
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.
- Iterators and Generators.
Covers the iteration protocol, iterable objects, generators and generator
A major focus of this section concerns the use of generators to set up data processing pipelines--a
particularly effective technique for addressing a wide variety of common systems programming
problems (e.g., processing large datafiles, handling infinite data streams, etc.).
- Some Advanced Topics. (Optional) A variety of more advanced programming topics including
variable argument functions, anonymous functions (lambda), closures, decorators, static and class methods, and packages.
The course is either taught over 3 days or over an expanded 4.5 day
schedule with additional hands-on projects. The course is designed to
be taught on a 9-5 schedule with a one hour lunch break. Class time is
evenly split between presentation slides and hands-on programming
exercises. Participants typically spend 3-4 hours each day working on
programming exercises and using Python.
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 for absolute beginners on how to program a computer!
Participants should already be familiar with the basic concepts of
programming such as variables, statements, control-flow, functions,
arrays, data structures, and common programming problems (e.g., searching,
In addition, it is assumed that students already know how to work with
files, folders, editors, command shells, environment settings,
internet connections, and other essential aspects of using a
computer for software development.
About the Instructor
David is the author of the Python
Essential Reference, the Python Cookbook, 3rd Edition.
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 (Python Lex-Yacc).
In addition to his work with Python, Dave has extensive experience
with C, C++, and assembly language programming. Dave has a Ph.D. in
This course is offered to the public on an ongoing basis in Chicago. It is
also available for on-site delivery in either a virtual or in-person
For more information, send email to "dave" at "dabeaz.com".
Click here for more information on other