User Tools

Site Tools

Advanced Scientific Programming in Python

a Summer School by the G-Node and the Physik-Institut, University of Zurich


Scientists spend more and more time writing, maintaining, and debugging software. While techniques for doing this efficiently have evolved, only few scientists have been trained to use them. As a result, instead of doing their research, they spend far too much time writing deficient code and reinventing the wheel. In this course we will present a selection of advanced programming techniques, incorporating theoretical lectures and practical exercises tailored to the needs of a programming scientist. New skills will be tested in a real programming project: we will team up to develop an entertaining scientific computer game.

We use the Python programming language for the entire course. Python works as a simple programming language for beginners, but more importantly, it also works great in scientific simulations and data analysis. We show how clean language design, ease of extensibility, and the great wealth of open source libraries for scientific computing and data visualization are driving Python to become a standard tool for the programming scientist.

This school is targeted at Master or PhD students and Post-docs from all areas of science. Competence in Python or in another language such as Java, C/C++, MATLAB, or Mathematica is absolutely required. Basic knowledge of Python is assumed. Participants without any prior experience with Python should work through the proposed introductory materials before the course.

Download the original announcement: pdf

Date & Location

September 1–6, 2013. Zürich, Switzerland

Information about the venue, the city of Zürich, travel, and accommodation

The school has already taken place. Read the results of the evaluation survey ;-)


You can apply on-line. Here is a preview of the application form.

Applications must be submitted before 23:59 CEST, May 1, 2013. The application process is closed: We received 177 applications! Notifications of acceptance will be sent by June 1, 2013. Participants have been selected. If you missed the deadline, write to to be put on the announcement list for next year.

No fee is charged but participants should take care of travel, living, and accommodation expenses.

Candidates will be selected on the basis of their profile. Places are limited: acceptance rate is usually around 20%.


You are supposed to know the basics of Python to participate in the lectures!

You are encouraged to go through the introductory material.



Day-by-day schedule with links to video recordings, lecture notes, exercises and solutions

Social events and local attractions

Day0 (Sun Sep 1): Best Programming Practices

  • Best Practices, Development Methodologies and the Zen of Python
  • Version control with git
  • Object-oriented programming & design patterns

Day1 (Mon Sep 2): Software Carpentry

  • Test-driven development, unit testing & quality assurance
  • Debugging, profiling and benchmarking techniques
  • Advanced Python I: idioms, useful built-in data structures, generators
  • Programming in teams

Day2 (Tue Sep 3): Scientific Tools for Python

  • Advanced NumPy
  • The Quest for Speed (intro): Interfacing to C with Cython
  • Best practices in data visualization

Day3 (Wed Sep 4): The Quest for Speed

  • Writing parallel applications in Python
  • Python 3: why should I care
  • Programming project

Day4 (Thu Sep 5): Efficient Memory Management

  • When parallelization does not help: the starving CPUs problem
  • Advanced Python II: decorators and context managers
  • Programming project

Day5 (Fri Sep 6): Practical Software Development

  • Programming project
  • The Pelita Tournament

Lectures start at 8:30 and finish around 18:30. During the day we will have short breaks (coffee & tea provided), and a long lunch break. The last half hour every evening is dedicated to tutors' consultation: Tutors will answer your questions and give suggestions for your own projects.

On Sunday, September 1 registration starts at 8:00: please try to be there as soon as possible, the lecture starts at 8:30 sharp.

On Friday, September 6, we are going to have a little farewell party that you should not miss: book your return travel not before Saturday, September 7 ;-)


Previous Schools

  • Kiel, Germany, September 2—7, 2012.
  • St Andrews, UK, September 11—16, 2011.
  • Trento, Italy, October 4—8, 2010.
  • Warsaw, Poland, February 8—12, 2010.
  • Berlin, Germany, August 31—September 4, 2009.

You may be interested in the results of our evaluation surveys: Kiel, St Andrews, Trento, Warsaw, Berlin.


Organized by Tiziano Zito (head) for the German Neuroinformatics Node of the INCF , Zbigniew Jędrzejewski-Szmek, and Nicola Chiapolini with colleagues from the Physik-Institut, University of Zurich (local organizers).


For any further questions please write to


We gratefully acknowledge support by a GRC Grant from the UZH Graduate Campus as well as from our sponsors:

Bartosz Teleńczuk gratefully acknowledges financial support from CNRS and European Community (BrainScales project).

Bastian Venthur was supported by grants of the BMBF (FKZ 01GQ0850 and 16SV5839).

Machines for parallel computing exercises were graciously provided by GC3, the Grid Computing Competence Center.

start.txt · Last modified: 2014/01/16 14:14 by nicola

Page Tools