This five-day tutorial, is intended for an audience of scientists involved
in software development for atomic-scale simulations. The following topics will be covered :
(1) Basic concepts of software maintenance
(concepts [1-4] ; coding rules, ROBODOC ) ;
(2) Version management tools
(concepts ; bzr  and svn ) ;
(3) Code re-use. Libraries.
(concepts ; NetCDF , ETSF_IO , LibXC) ;
(4) File formats. Conversion tools.
(concepts ; NetCDF  , NQ FileFormat , ETSF_IO , XML , pspconvert ) ;
(5) Scripting. Introduction to Python  ;
(6) Testing, debugging, profiling, optimizing.
(concepts - idb and gdb  ) ;
(7) Build system : the autotools and platform specificities [14,15].
Each theme will be addressed thanks to a mix of :
presentation of basic concepts, and general information ;
introduction to related specific tools, with examples ;
detailed presentation of how it works for selected atomic-scale software ;
prepared hands-on exercices ;
working sessions, during which the student work on a self-defined project ;
short presentations of the integration of these concepts for different atomic-scale software.
(University of Liege)