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.

Syllabus

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, 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.

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.

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.

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.).

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>

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.

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 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.