===================================================
Practical Scientific Computing in Python - Agenda
===================================================
Initials indicate who presents what:
* JDH: John D. Hunter
* FP: Fernando Perez
* JW: Jeff Whitaker
Day 1 (Friday December 7)
=========================
830-900: Installation and configuration (optional)
This half hour will be spent helping with installation issues, before the
real workshop begins. If you've already set things up on your system
(meaning you have ipython, numpy, matplotlib and scipy installed and
running), feel free to skip this.
900-905: Introduction
Official start of the workshop, introduce instructors.
905-945 (JDH): Python for scientific computing
A high-level overview of the topic of Python in a scientific context.
950-1045 (FP): Workflow, guided by a simple examples.
This section will be used to illustrate basic workflow for students, by
having them 'type along' a very simple exercise, trapezoid rule integration.
We'll discuss the basics of numpy arrays and will solve the trapezoid
integration exercise together.
----
1045-1100: Coffee break
----
1100-1145 (FP): Introductory examples.
We'll have two exercises, so students who finish the first one early don't
get bored and can do a second one:
* FFTs: 2-d image denoising via FFT.
* Numerical integration and root finding.
----
1145-1230: Lunch Break
----
1300-1400 (JDH): Basic numpy/pylab usage.
A linear algebra/2d data visualization demo using numpy and matplotlib will
then be extended as an exercise by the students. If time allows, an ODE
example will be presented:
* Glass2 demo: linear algebra, event handling in interactive plots.
* Glass1 exercise: simplified version of the above as an exercise.
* ODEs - Lotka Volterra equations.
1400-1500 (JW): Basemap: geographical datasets.
Basemap_ is a matplotlib toolkit that plots data on map projections (with
continental and political boundaries).
.. _Basemap: http://matplotlib.sourceforge.net/matplotlib.toolkits.basemap.basemap.html
----
1500 End of main work for Friday
----
1500-1700: Open data access standards and protocols (optional material)
We realize there's a Christmas party, so we'll keep this part optional, feel
free to skip out as the needs for wine and cheese dictate. We'll look at the
Python implementation of the OpenDAP protocol and a package for easy
construction and manipulation of HDF5 datsets:
* (FP) - OpenDAP_ via the PyDAP_ implementation.
* (JDH) - PyTables_: an HDF5 library.
.. _OPenDAP: http://opendap.org
.. _PyDAP: http://pydap.org
.. _PyTables: http://www.pytables.org
Day 2 (Saturday December 8)
===========================
900-930 (FP): Traits_, TVTK_ and MayaVi2_
Automatic GUI generation, VTK library, the MayaVi visualization application.
This is a demo of capabilities, not an exercise.
.. _Traits: http://code.enthought.com/traits
.. _TVTK: https://svn.enthought.com/enthought/wiki/TVTK
.. _MayaVi2: http://code.enthought.com/mayavi2
9300-1030 (FP): - Lightweight tools for low-level code reuse
These two tools ship by default with NumPy (f2py) and SciPy (weave), and
allow you to easily access low-level codes or optimize numerical hotspots:
* f2py: Fortran code wrapping exercise.
* weave: C/C++ inlining exercise.
----
1030-1045: Coffee break
----
1045-1200 (JDH): Other tools for C/C++ code reuse
This will be a demo of a number of other tools that exist in Python for
accessing C and C++ codes, each with its own set of strengths:
* ctypes_: easy access to dynamically linked libraries.
* pyrex_: blend of python/C for automatic generation of native code.
* SWIG_: automatic wrapping of C/C++ libraries.
* `Boost.Python`_: automatic wrapping of C++ libraries with template support.
* A tour of scipy's code base, which uses several of these techniques.
.. _ctypes: http://python.net/crew/theller/ctypes
.. _pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex
.. _SWIG: http://www.swig.org
.. _`Boost.Python`: http://www.boost.org/libs/python/doc
----
1200-1300: Lunch break
----
1300-1330 (JDH): Participating in the open source process
We'll discuss the SVN workflow, contributing to the workbook and the projects
used in this course, etc.
1330-1400 (JDH): Data smoothing
Type along data smoothing, convolutions, scipy.filter
1400-1430 (FP): Fitting
Basic data fitting, scipy.optimize exercise.
1430-1500 (FP): SAGE
An overview and brief demo of the Sage_ project, an ambitious and rapidly
growing Python project to offer free mathematical software (as well as
integration with commercial systems).
.. _Sage: http://sagemath.org
1500-1515: Wrapup
We'll have a bit of time for discussion, feedback and any questions that may
have been left.