The course is directed at Bachelor, Master, and Diploma students and to PhD Students of the BCCN and does not require any prior knowledge of programming languages or computers. However, students with experience in other programming languages will also benefit. It is helpful to have covered this material before starting a Diploma or Master's project, regardless of whether the focus is experimental or theoretical.
Python [1] is a modern object oriented programming language with increasing popularity in computational intense sciences like physics and neurobiology. Many current simulators use it as a scripting language to control simulations. Extended by scientific libraries (SciPy/NumPy [2]), Python becomes a versatile and powerful tool for numerical calculations and simulations. Being open source, it provides a valuable and freely accessible resource especially for students.
We teach an example driven rather than a language feature based approach using selected problems from neurobiology and physics. In an introductory session the UNIX/Linux operating system and the typical hard and software environment of scientific programming are introduced.
New concepts are successively introduced as required by the examples. The two weeks block course consists of two distinct units: In the first week, brief lectures followed by practical work on examples will introduce the language concepts and tools. In the second week, every student works on a mini-project applying and deepening the acquired knowledge. The course ends with a colloquium; there will be no written protocols after the course. The collection of numerical algorithms and functions provided by SciPy will be used from the beginning of the course to provide the students with powerful tools for numerical computing, simulation and data analysis. This allows rapid progression towards interesting applications. Technicalities and low-level programming will be avoided where possible and adequate. The work with the interactive iPython [3] shell allows for learning with direct feedback also employing advanced plotting functions (matplotlib [4]), similar to Matlab. In addition to basic control structures, functions and variables, also more advanced concepts like object oriented programming and data structures like lists, vectors and dictionaries, needed to manage large projects will be covered. The course material (handouts, exercises) will be in English. The lectures will be in English by default, in German upon negotiation.
[1] python.org [2] scipy.org [3] ipython.scipy.org [4] http://matplotlib.sourceforge.net/ |