This class is intended for the scientist or engineer interested in using Python for their day-to-day computational tasks. It begins with a day long introduction to the Python language focusing on the standard data structures, control constructs, and text/file processing. Object oriented development is briefly discussed. Day two introduces numeric data processing using NumPy arrays as well as visualizing data with 2D plots. Day three covers several advanced topics in NumPy such as structured arrays and memory mapped arrays for dealing with large data. This is followed by a survey of the scientific algorithms available in SciPy including interpolation, integration, linear algebra, signal/image processing, optimization, and others. The class concludes with an overview of how to interface Python with other languages (C/C++/Fortran).

The week is wrapped up with two 1-Day Modules, Interfacing with C / C++ and Fortranand Introduction to UIs and Visualization. Taken together, these five days of highly interactive training will give you a rock-solid base to build high-quality software in terms of readability and performance. Developing cutting-edge custom software, Enthought instructors possess professional, first-hand experience with the tools and technologies covered in the course.


Programming experience in some language (C, VB, Fortran, Matlab) is expected. Experience with C, C++, and/or Fortran is useful for some topics. Object oriented programming skills are not necessary but will be helpful. Knowledge of calculus, statistics, signal and image processing, optimization, are all valuable but not absolutely required.


Day 1
8:30 am to 5:00 pm

Introduction to Python

The first day is devoted to understanding how to think in Python. We start by demonstrating the IPython interactive environment and how it can be used for rapid application development. The pace of this day is determined by previous exposure to Python. Even experienced Python programmers report learning new ideas from the experts that teach this course.

  • Data-types (strings, lists, dictionaries and more)
  • Syntax and language structure (if-then statements, looping)
  • Defining functions
  • Creating and importing modules
  • Reading and writing files

Day 2
8:30 am to 5:00 pm

Python, continued
  • Introduction to Python classes and object oriented programming
  • Handling errors
Introduction to NumPy

The NumPy extension module to Python is exposed as a tool for rapidly manipulating and processing large data-sets.

  • Detour: plotting with matplotlib
  • Basic operations and manipulations on N-dimensional arrays
  • Using vectorization to process arrays with implicit loops
  • Reading and writing arrays
  • Indexing arrays by slicing or with more general indices or masks
  • Understanding the N-dimensional data structure

Day 3
8:30 am to 5:00 pm

NumPy, continued
  • Broadcasting of array operations
  • Working with “structured” arrays
SciPy, extension modules, and additional topics
  • Overview of SciPy
  • 3D plotting with mayavi.mlab
  • Introduction to C extension modules

Day 4
8:30 am to 5:00 pm

Interfacing with C / C++ and Fortran

One of Python’s greatest features is its ability to integrate seamlessly with C, C++, and Fortran. In this module you will learn how to use a variety of tools that have emerged for efficiently integrating with legacy code as well as optimizing new code with compiled modules. This module extends the material covered on the third day of the Python for Scientists and Engineers course. Topics to be covered can be modified to suit participants interest but can include:

  • Integrating with Fortran using f2py
  • Integrating legacy C / C++ code using SWIG
  • In-lining C/C++ in a Python application using Weave
  • Calling arbitrary shared-libraries with ctypes
  • Creating new extension modules with Cython

Day 5
8:30 am to 5:00 pm

Introduction to UIs and Visualization

This one day course is a condensed version of portions of the 3-day course which covers just the basics of Traits and Chaco. Students will learn the basics of Traits and how to build simple interactive visualizations with Chaco. Topics included:


  • Notification
  • Visualization
  • Validation
  • Initialization
  • Delegation


  • Integration into Traits UI
  • Scatter and line plots
  • Image plots
  • Containers for layout
  • Simple tool creation for event handling
  • Introduction to overlays