User Tools

Site Tools

Advanced Scientific Programming in Python

a Summer School by the G-Node and the
Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture (FESB), University of Split


Test-driven development, debugging, and profiling

Lecturer: Pietro Berkes, <pietro.berkes_AT_ googlemail _DOT_ com>

Download the cheat sheets with a summary of the tools and methods discussed in the class!

Course material

Slides: class slides


The Live Demo TDD code, implementing the k-means algorithm:

Outline of the lecture (2h):

  1. The agile development cycle, scientific-style
  2. Unit testing
    • unittest
    • testing with numpy arrays
    • what to test and how for scientific programming
  3. Debugging
    • pdb
  4. Profiling
    • timeit
    • cProfile
  5. Coverage
  6. Continuous integrations

Many live demos, music and dances!

Good programming practices

Software carpentry in general

Two comprehensive software carpentry courses:

Tiziano's course at the Bernstein center in Berlin

The classic book about software carpentry: The pragmatic programmer

Coding standards

PEP8, the official Python style guide

pylint , tool to check coding standards

pyflakes, passive code checker (only errors, not style)

pep8, script to check PEP8 coding standard

Test suites

unittest, the standard Python test framework

nose, an alternative framework that simplifies writing tests and allows for extension and customization of test experience. There is a useful option for running a test coverage analysis: nosetests –with-coverage

py.test, a less common alternative

doctest, write tests inside of docstrings

mock, the most popular tool for creating mock objects for testing.


pdb, the standard python debugger

winpdb, a graphical interface for pdb. It's platform-independent despite its name.

DDD (DataDisplayDebugger), graphical general-purpose debugger.

Python IDEs often have a built-in debugger.


cProfile, the batteries included Python profiler

timeit, built-in Python module to measure the execution time of small code parts

Tools to visualize profiling results:

RunSnakeRun, a wxPython-based visualization of profiling results – very intuitive!




software_carpentry.txt · Last modified: 2014/09/28 09:18 by pietro

Page Tools