This is a pre-conference activity and requires an additional $50 fee. Please see the registration form for details.


INSTRUCTORS: Eric Jones, Patrick Miller and Travis Oliphant.

Sunday, October 24, 9:00 a.m. - 5:00 p.m.
Room 322, Stewart Center

Python has emerged as an excellent choice for scientific computing because of its simple syntax, ease of use, and elegant multi-dimensional array arithmetic. Its interpreted evaluation allows it to serve as both the development language and the command line environment in which to explore data. Python also excels as a "glue" -- a common need in the scientific arena.

The first half of the tutorial introduces the Python programming language to scientists. The pace is fast and geared toward individuals already comfortable with a programming language such as Matlab, C, or Fortran. Attendees will learn the basic constructs of the language and how to do basic numerical analysis with Python. The 3rd section covers the SciPy library ( that provides modules for linear algebra, signal processing, optimization, statistics, genetic algorithms, interpolation, ODE solvers, special functions, etc. We also cover scientific plotting with python.

This 2nd half of the tutorial covers advanced topics in scientific computing such as integrating Python with other languages and parallel programming. Wrapping Fortran, C, and C++ codes, either for optimized speed or for accessing legacy code bases is covered in the middle section. Tools such as SWIG, f2py, and Boost Python are all discussed along with common pitfalls and good design practices. The final session covers parallel programming with an emphasis on pyMPI. This tutorial is a companion class to a morning session that introduces Python to the scientific community. A Windows version of Python (Enthought Edition) will be available on CD for attendees to install and use during the tutorial. The installation includes Python, Numeric, SciPy, wxPython, and VTK as well as other packages useful for scientific computing.

Morning Session:

9:00 a.m. Introduction to the Python Language
10:00 a.m. Array Arithmetic with Numeric
10:45 a.m. Break
11:00 a.m. Scientific algorithms with SciPy
12:00 p.m. 2D visualization and plotting
12:15 p.m. Lunch (On your own at a local restaurant)

Afternoon Session:

1:45 p.m. Introduction to Python as "glue"
2:00 p.m. Wrapping Fortran
2:30 p.m. Wrapping Legacy C/C++
3:15 p.m. Break
3:30 p.m. Parallel Programming
5:00 p.m. Adjourn

The Python Tutorial presentations can be downloaded below.

         • Presentation1 (pdf, pps)
         • Presentation2 (pdf, pps)

More information on Python can be found at

Instructor Biographies:

Eric Jones

Eric Jones is the President of Enthought, a scientific computing company based in Austin, Texas. Enthought leads the development of SciPy (, a large open source library of numerical algorithms for Python. Prior to co-founding Enthought, Eric worked in the fields of numerical electromagnetics and genetic optimization in the Department of Electrical Engineering at Duke University. He has taught numerous courses about Python and how to use it for scientific computing and also serves as a member of the Python Software Foundation. Eric holds M.S. and Ph.D. degrees from Duke University in Electrical Engineering and a B.S.E. in Mechanical Engineering from Baylor University.

Patrick Miller

Pat Miller has over twenty years of experience in high performance and parallel computing, and he has been a devoted lover of Python for the last eight. He has a Ph.D. in Computer Science from UC Davis in runtime error detection/correction. He currently works at Lawrence Livermore National Laboratory and lectures in high performance computing at the University of San Francisco. He has research interests in parallel computation, parallel languages, high efficiency interpreters, and debuggers. He previously developed compilers and interpreters for the SISAL parallel language project and more recently developed a distributed, parallel Python implementation (pyMPI), and various Python to C++ translators.

Travis Oliphant

Travis became infatuated with Python for numerical and scientific programming while completing his Ph.D. in Biomedical Engineering at the Mayo Clinic from 1996-2000. An early contributor to the documentation for Numeric Python, he has submitted several bug-fixes and enhancements to Numeric. He is now the de-facto maintainer of the Numeric source. SciPy grew out of a collaboration with Eric Jones and Pearu Peterson to collect the disparate tools they had all been working on into one package. As an assistant professor of Electrical and Computer Engineering at Brigham Young University, Travis enjoys working on novel biomedical imaging methods and general inverse problems. He lives in Spanish Fork, UT with his wife and 4 (nearly 5) children.