Practical Python Programming

This course, designed for professional software developers, scientists, and engineers, is an in-depth introduction to the Python programming language, standard library, and programming idioms. Although the course assumes no prior experience with Python, the course is strongly focused on practical applications in data analysis, automation, and script writing.


  1. 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.
  2. 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.
  3. Program Organization, Functions, and Modules. More information about how to organize larger programs into functions and modules. A major focus of this section is on how to design functions that are reliable and can be easily reused in other settings. Organizing code into modules and usage of common standard library modules is also covered.
  4. 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 involving inheritance and code reuse.
  5. 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.
  6. Iterators and Generators. Covers the iteration protocol, iterable objects, generators and generator expressions. 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.).
  7. Some Advanced Topics. A variety of more advanced programming topics including variable argument functions, anonymous functions (lambda), closures, decorators, static and class methods.
  8. Testing, Debugging, and Software Development Practice. This section discusses many isses that are considered important to Python software development. This includes program testing using the unittest module, logging, and effective use of assertions. The Python debugger and profiler are also described. /li>

  9. Packages. A discussion of how to take larger programs and organize them into a package structure. Concludes with some information on installing third-party packages and preparing your own code for installation.

Instruction Format

The course is either taught over 3 days or over an expanded 4 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, sorting, etc.).

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.

2018 Pricing and Scheduling

The cost of a 3-day course for 12 students is $12000 plus instructor travel expenses. An additional project day can be added for $4000. Additional students can be added to the course for $300/student per day.

Courses are typically scheduled 8-20 weeks in advance and may be taught on-site or in virtual online format.

If you only have a few developers to train, you might consider sending them to a course in Chicago instead.


For more information, send email to "dave" at "".

More Information

Click here for more information on other training options.