This class is for scientists and engineers with a basic knowledge of Python.
Course Date: Mar 4-8, 2013.
Instructor: Mike Müller
- $2500 (all 5 days)
- $1500 (3-day intro section)
- $1000 (2-day advanced section)
[ Register | More Information |FAQ]
- A printed copy of the course notes.
- Breakfast and lunch at local restaurants
Python for Scientists and Engineers
[5 days] A full 5-days of everything scientists and engineers
would want to know about using Python for solving scientific
problems. Taught by special guest, Mike Müller, founder of the
Python Academy and recent recipient of a PSF Community Service
Award, this course gives an overview of important libraries
commonly used for solving scientific and technical problems,
techniques for connecting Python to existing code written in C, C++,
or Fortran, and critical software engineering topics including testing
and version control. You can also sign up for a shortened 3-day
version of the course that focuses on using Python's scientific tools,
but which doesn't covered related software engineering topics.
Major topics include:
- Numerical calculations with numpy
- Storage and processing of large-scale data
- Plotting and visualization of data with matplotlib
- Using Python's C-API
- Extension building with Cython, ctypes, Swig, and f2py
- Unit testing
- Version control with Mercurial
- Object oriented programming
- Application integration
About the Instructor
Mike Müller has been using Python since 1999 mainly for scientific software.
He has been teaching Python courses since 2004 and is the founder and CEO of
Python Academy, a training and consulting company specializing in Python.
He has taught thousands of students introductory and advanced Python
topics. Since many of his students are scientists and engineers, he is very
familiar with their needs. He has been continuously refining the course contents
and teaching method for best learning results.
In addition, he regularly teaches tutorials at PyCon US and EuroSciPy. He is a
member of the Python Software Foundation, main organizer and of the first two
EuroSciPy conferences as well as chair of the first PyCon DE. He also serves at
committees of scientific conferences.
Detailed Course Outline
The first three days of the course are focused on using Python's
scientific tools and useful programming techniques.
Overview of Scientific and Technical Libraries for
Python. There are a great variety of Python libraries for scientific purposes. A short
overview of important libraries is given along with examples.
Numerical Calculations with numpy. The numpy library is the
defacto standard for working with arrays and
performing linear algebra computations. This section focuses on
important numpy issues including array construction, array
properties, datatypes, slicing and broadcasting, universal
functions, and numerical algebra computations.
- Storage and Processing of Large Amounts of Data.
Applications in scientific and engineering domains often have to deal with large
amounts of data. In this section, techniques for dealing with
commonly encountered data formats and data storage options are discussed. This includes
column-oriented text files, Microsoft Excel, NetCDF, HDF5,
relational databases, and data serialization with pickle.
- Graphical Presentation of Scientific Data with matplotlib.
The results of scientific and technical calculations regularly need to be presented
graphically. This section introduces matplotlib, a library that allows
scientists to produce publication-quality plots within Python using
only a few lines of code.
- Object Oriented Programming for Scientific and Technical Projects.
The object-oriented paradigm is currently prevailing in software
engineering. However, many scientist and engineers are more
familiar with procedural programming.
This section introduces important object oriented programming topics
and uses examples to show that object orientation can be beneficial
for many typical scientific or engineering problems.
- Open Time for Problem Solving.
Prior to the course, participants will be asked to about the common
kinds of tasks that they usually need to solve at work.
In this section, solution strategies with Python will be attempted and
The last two days of the course go into more depth on software
engineering topics including interfacing with other languages,
testing, and version control.
- Extending Python with Other Languages. Python can be
readily connected with other programming languages including C, C++,
and Fortran. In this section, a computationally intensive example
will first be written in Python and then re-implemented in other
languages and exposed to Python using different integration
techniques. These include direct use of the Python C-API, Cython,
ctypes, Swig, and f2py. Note: This is a large class component in
which students will be expected to work with a mix of Python, C, C++, and Fortran
- Unit Testing. An introduction to unit testing for
scientists and engineers. This section introduces important unit
testing topics and describes how to use commonly used Python testing
tools including the unittest and doctest modules, the py.test
framework, and nose.
- Version Control with Mercurial. Version control is a
fundamental tool for software engineering.
This section introduces Mercurial, a distributed version control
system. You will create a small project under version control and learn how to work individually and in
collaboration with others.
Students will receive a bound set of lecture notes along with a complete set of more than class exercises (distributed