Organisers - Xavier Gonze (Universite Catholique de Louvain)
- Damien Caliste (CEA Grenoble)
- Yann Pouillon (Universidad del País Vasco UPV/EHU)
- Francesco Sottile (LSI - Ecole Polytechnique)
- Matthieu Verstraete (University of York)
- Alberto Castro (Free University of Berlin)
Supports CECAM

DescriptionThis 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 [5]) ;
(2) Version management tools
(concepts ; bzr [6] and svn [7]) ;
(3) Code re-use. Libraries.
(concepts ; NetCDF [8], ETSF_IO [9], LibXC) ;
(4) File formats. Conversion tools.
(concepts ; NetCDF [8] , NQ FileFormat [10], ETSF_IO [9], XML [11], pspconvert [9]) ;
(5) Scripting. Introduction to Python [12] ;
(6) Testing, debugging, profiling, optimizing.
(concepts - idb and gdb [13] ) ;
(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. Scientific ObjectivesThe goal of the tutorial will be to improve the ability of the participants to produce
software that will have a long life cycle, that is adequate for
group software development, that is re-usable, that can better communicate with
other atomic-scale software, that executes correctly and is portable,
with an acceptable execution speed. We will focus on concepts and tools
that are independent of the scientific programming language used by
the developer (FORTRAN or C/C++). Although
most of the exemples will be taken from the software and standards developed
within the Nanoquanta Network of Excellence (http://www.cmt.york.ac.uk/nanoquanta), the tutorial will aim at a high level
of applicability, and thus should benefit to every developer of atomic-scale software.
Both the example softwares and the tools (at the exception of Xdb) that will relied upon
are available under a free software licence, so that the participants will encounter
no barrier to immediately apply the formation when back in their research institution. References[1] Software maintenance. Concepts and practice. (2003) 2nd ed.
P. Grubb & A.A. Takang, World Scientific (London)
[2] The mythical man-month. Essays on software engineering. Anniversary edition (1995) Frederick P. Brooks, Jr. Addison-Wesley
[3] http://www.tuxedo.org/~esr/writings/cathedral-bazaar
[4] http://www.extremeprogramming.org/rules.html
[5] http://www.xs4all.nl/~rfsber/Robo/robodoc.html
[6] http://bazaar-vcs.org
[7] http://subversion.tigris.org
[8] http://www.unidata.ucar.edu/software/netcdf
[9] http://www.etsf.eu/index.php?page=tools
[10] http://www.etsf.eu/index.php?page=standardization
[11] http://www.xml.com
[12] http://www.python.org
[13] http://www.intel.com/software/products/compilers/docs/linux/idb_manual_l.html and http://sourceware.org/gdb/download/onlinedocs/gdb.html
[14] http://www.gnu.org/software/autoconf
[15] http://www.gnu.org/software/automake |