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



SCIENTIFIC COMPUTING WITH PYTHON
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 multidimensional 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 (www.scipy.org) 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 www.python.org


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 (www.scipy.org), a large open source library of numerical algorithms for Python. Prior to cofounding 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 19962000. An early contributor to the documentation for Numeric Python, he has submitted several bugfixes and enhancements to Numeric. He is now the defacto 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.

