Length: 4 days (32 hours)

Description: This is an introduction to Python for experienced programmers. After taking this course, you will be ready to start using Python in your day-to-day work, helping your company to reap the benefits of the Python language.

This is the course that some of the world’s largest and best-known companies (e.g., Apple, Cisco, HP, Western Digital, and VMWare) invite me to teach, again and again, to introduce their programmers to Python.

Audience: People with programming experience who wish to learn Python and taken advantage of its power.  If you don’t have any experience programming, you should probably consider my  Intro to Python for non-programmers.

The course assumes that participants have up to one year of experience with Python, including zero experience. Most people taking this class have several years of experience with C, C#, C++, and/or Java. Many people who took university-level courses in Python took this class and found that it filled in many details that they hadn’t previously understood.

The course looks at Python’s basic data structures and functions, and introduces both functional and object-oriented programming techniques with the language. The course includes a large number of exercises for hands-on practice, as well as live demos and the opportunity for questions.

Participants will receive the Jupyter notebooks into which I live-code during the class — including demos, exercises, and remarks.

The course includes a very large number of hands-on exercises.

This course, like all of my courses, can be given either in-person or virtually. Contact me for availability and pricing, but be warned that my time tends to fill up months in advance.


  • Values
  • Assignment and variables
  • Indentation and blocks
  • Operators and equality
  • Conditionals with if/elif/else
  • Complex conditions with and/or/not

Data structures

  • None
  • Booleans
  • Integers and floats
  • Strings
  • Loops (for and while)
  • Lists
  • Converting strings to lists (and back)
  • Tuples and tuple unpacking
  • Dictionaries
  • Sets
  • Files


  • Defining functions
  • Positional vs. keyword arguments
  • Arguments and parameters
  • Return values
  • Variable function parameters with *args and **kwargs
  • Variable scopes in Python: LEGB

Functional programming

  • List comprehensions
  • Functions passed as function arguments (e.g., with “sorted”)

Modules and packages

  • The various types of “import”
  • Writing modules
  • PyPI and “pip”


  • Classes and instances
  • Attributes and the ICPO rule
  • Attribute scoping rules
  • Inheritance
  • Simple magic methods


  • What are exceptions?
  • Trapping exceptions
  • Raising exceptions