Russel Winder's Python Workshop

Topics covered at PYTHON-01-04

Dates coming soon

Would you like to learn Python? Join Russel's Python Workshop and learn both low-level details of Python as well as the idiomatic design approaches in Python.

We'll start with the basics of the Python language, after which we discuss various testing strategies and their rationale.

Through lectures, exercises and discussions, we'll introduce Concurrency and Parallelism after which we'll learn about GUI's. We'll then explore Networking, XML processing and Persistence when developing applications with Python.

On the final day of this fasttrack Python course, you'll work on an example of Python DSL, we'll learn about Python extensions and extension testing and we'll finish the course with an introduction to Django, Python Web Application frameworks and how to use dynamic techniques.

Learn how to:

  • Use the basics of the Python language
  • Apply Testing strategies and understand the rationale of these
  • Apply Concurrency and Parellism
  • Write GUI's for event-driven systems
  • Explain the concepts of networking in Python
  • Use XML for Processing
  • Incorporate Persistence
  • Develop dynamic Python systems with DSL's
  • Use Python extensions and test them
  • Write small to medium-sized programs using modules and packages
  • Read and amend other people's Python code and, most importantly, explore more Python techniques and idioms for yourself

What the community says

"Very interesting course, in a short time, we have been able to cover many subjects that have given me many insights to go deeper into Python"

July 2014 delegate on 15th Jul 2014

About the Author

Russel Winder

Russel Winder is an independent consultant, analyst, author, expert witness, and trainer at Skills Matter and an expert on Java, Groovy, Scala, Python, D, Go. Gradle, SCons, Waf, SBT. Bazaar, Mercurial, Git.


  • Some background to Python
  • Tools of the trade

Language basics

  • Value, types, expressions, and statements
  • Lists, tupes, and dictionaries
  • Functions
  • Classes
  • Files, modules, directories and packages


  • Rationale and strategies
  • Tools, techniques and approaches
  • PyUnit (aka unittest) and PyTest (aka py.test)
  • Test-driven development (TDD)

Concurrency and Parallelism

  • Threads
  • Threading
  • Multiprocessing
  • CSP
  • Actors
  • Dataflow


  • Event-driven systems
  • GUI frameworks: PyGTK, PyQt, wxPython


  • Concepts of networking
  • Sockets
  • Higher-level approaches
  • Event-driven approaches
  • Twisted Internet

XML Processing

  • Concepts of XML documents
  • SAX and DOM<
  • minidom
  • ElementTree
  • LXML


  • Files, pickling and shelving
  • SQLite
  • SQLAlchemy
  • PyMongo

An example of a Python DSL

  • SCons: a build framework

Python Extensions

  • Rationale and architecture
  • ctypes
  • SWIG
  • C Python API
  • Boost.Python
  • Cython/Pyrex

Extension Testing

  • C/C++ test frameworks vs. Python test frameworks


  • Web applications frameworks
  • Using dynamic techniques


If you are a relatively experienced programmer, but have not worked with Python before, this Python course will provide you with a thorough grounding.


The course is aimed at a very diverse audience, as long as you have prior programming experience, be it languages such as C, C++, Fortran, Java, C#, Perl, etc. -- perhaps even a little Python -- and you want to learn how to program using Python in an idiomatic (Pythonic) style, this course if for you!

Bring your own hardware

You are requested to bring your own laptop for this course, so you learn how to develop within your own environment. A full installation guide for the course software will be provided with your joining instructions.

If you are unable to bring a laptop for the course, please contact us on +44 20 7183 9040 or email us.