Table of Contents

Software carpentry: best practices and tools

Course material

Slides of the course: Morning, Part I, Morning, Part II, Afternoon, Object Oriented Design

Exercises: Part I, Part II_

Solution to the exercises:

Cheat sheets that summarize the agile development work cycles, and the main features and syntax of Python tools

Good programming practices

Software carpentry in general

Two comprehensive software carpentry courses:

University of Alberta

Tiziano's course at the Bernstein center in Berlin

Coding standards

PEP8, the official Python style guide

Refactoring

Refactoring home page, maintained by the author of the main refactoring book, //Refactoring: Improving the Design of Existing Code//, Martin Fowler

Debugging

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.

Profiling

cProfile, the batteries included Python profiler

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

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

Test suites

unittest, the standard Python test framework

py.test, an alternative framework that simplifies writing tests and allows for extension and customization of test experience

nose, another popular alternative

Version control

Subversion (SVN)

SVN book; particularly important is the basic work cycle

A useful and complete one-page cheat sheet for SVN

subclipse, SVN plug-in for Eclipse

TortoiseSVN, SVN integration for the Windows Explorer

Distributed version control

Mercurial

git

bazaar

Object Oriented Programming and Software Design

Here is is state pattern example that I talked about: State Pattern Example

Here are a few interesting links about advanced Python OO stuff:

To learn more about software design and design patterns you can read some old-school books:

And for fun you can also read blogs, like: