We offer introductory and advanced courses in Python for both:

  • beginners to programming;
  • experienced programmers new to Python.

The courses are a mixture of hands-on exercises and instruction from experts.

Upcoming public courses


Python for Scientists and Engineers: 24-28 November 2014. More info and booking.


Python for Data Analysis: 10-12 December 2014. New course! More info coming ASAP.

Python for Programmers: 3-day course

This course requires some familiarity with programming concepts.

By the end of this course, you will have all the knowledge you need to start programming competently in Python. You will know what’s available with Python, how to structure your code, how to make the most of Python. You will have had experience with using Python for various scripting and data manipulation tasks. You will know the basics of how to use Python for developing web apps for intranet sites or the internet. You will understand the elegance and power of the language and how to find further learning resources as you begin using Python to solve real-world problems.

Day 1 covers the basics of using Python for general programming tasks.

The syllabus is:

  • Why use Python? What’s possible?
  • Python versus Java, C, C++, Matlab, R, …
  • Python syntax and concepts
  • Input and output of string and binary data
  • Useful data structures
  • Practical tips and tricks
  • Tour of the amazing standard library

Day 2: Intermediate Python

Day 2 covers more advanced programming concepts in Python, including objects; best practices like unit testing; and how to write efficient, maintainable code. It also introduces some very practical tips and tools for Python programming.

The syllabus is:

  • Classes and objects
  • Modularity and packaging
  • Best practices for writing maintainable code
  • Python idioms and style
  • Documenting and unit testing Python code
  • Practical debugging strategies
  • Efficient coding practices
  • Tools for benchmarking and profiling
  • Compatibility with Python 2.x and 3.x

Day 3: Web development with Django

Day 3 covers the Django framework (Python’s answer to Ruby on Rails) for developing web apps. This demonstrates the Python language features and concepts from days 1-2 in a practical setting. Web development in Python is also an essential skill in its own right (and much sought-after in industry). By the end of day 3, participants will know enough to start developing useful database-backed web apps in Django immediately.

The syllabus is:

  • Database access in Python
  • Basics of web programming
  • What is Django? What’s possible?
  • Django’s models and ORM
  • Django views and templates
  • Handling URLs and web forms
  • Django’s automatic admin interface
  • Building a complete database-backed web app
  • Cloud-based deployment: Python with Google AppEngine and Amazon Web Services
  • Practical tips: debugging, database migrations

Python for Scientists and Engineers

We also offer 3-day to 5-day specialist courses in Python for science and engineering. These include the basic and intermediate modules above and include specific help on manipulating data for scientific and engineering applications.

By the end of the course, you will have all the knowledge you need to start programming competently in Python. You will know what’s available with Python, how to structure your code, and how to use Python’s data structures competently to write clean, efficient code. You will have had experience with using Python for various scripting and scientific data manipulation tasks, including easily creating beautiful plots, manipulating different kinds of scientific data, performing image analysis, and analysing geospatial information in Python.

The syllabus for days 1 and 2 are as above. Days 3-5 cover more advanced Python for scientific computing:

Day 3: Basics of Scientific Computing with Python

Day 3 teaches the use of Python for scientific computing. It covers array and matrix manipulation, an overview of available scientific routines, and 2D plotting, with the packages NumPy, SciPy, and Matplotlib. The syllabus is:

  • Introduction to numerical data manipulation with NumPy
  • Tour of SciPy for scientific data manipulation: optimization, statistics, clustering, interpolation, signal processing (including image denoising), classification, sparse matrices
  • 2D plotting and visualisation with Matplotlib

Day 4: Handling Scientific Data in Python

Day 4 introduces further practical tools for scientists and engineers working with different kinds of data. The syllabus is:

  • Data analysis and modelling with Pandas (including time-series, missing values, and Excel data)
  • Interfacing Python with relational databases
  • Managing huge hierarchical data sets with NetCDF4-Python and PyTables
  • Interfacing Python with other programming languages: C/C++, Fortran, R
  • Introduction to building GUIs for scientific and engineering applications

Day 5: Handling Spatial Data in Python

Day 5 introduces practical tools for scientists and engineers working with geospatial data. The syllabus is:

  • Introduction to spatial analysis in Python
  • Reading spatial data with open-source tools (QGIS, GDAL, Fiona, GRASS)
  • Projections; vector analysis and the ‘shapely’ package
  • Raster image analysis in Python: worked examples with SciPy (ndimage, signal) and PIL
  • Network analysis using NetworkX
  • Advanced spatial analysis topics: spatial autocorrelation with PySAL; processing large spatial datasets with supervised classification and point pattern analysis.

Course Locations

We offer courses either on-site or at our partner training facilities in Australian capital cities and Singapore.


The cost for our public courses is A$715 per day (inc GST) in Australia, or S$800 per day in Singapore.

Group discounts of 15% are available for group bookings of 5 or more.


  • Python for Scientists and Engineers: Melbourne, November 2014. Book here.
  • Python for Data Analysis: 10-12 December 2014.

On-site courses

We also offer custom courses on-site for teams within organizations. These are particularly appropriate if your team uses particular tools or data sources in its workflow. These are also helpful to bring a whole team up-to-speed with Python-based development. Please contact us to discuss your needs.