About CSC

Process for CSC hosting
School Models
Role of Local Organisers
Other Roles

Past Schools

2004 2005 2006 2007 2008 2009 2010 2011

Diploma at CSC
Sport at CSC
Inverted CSCs

iCSC05 iCSC06 iCSC08 iCSC10 iCSC11

Special schools


CSC 2004

CSC2004 Overview

Practical Information






Grants from EU -FP6

Eligibility Conditions

Level of grant support

How to apply

CERN School of Computing 2004 28 August- 11 September 2004 in Vico Equense, Italy

Programme Overview

Grid Track

Software Track

Physics Comp. Track



Lecturer Bios


 Printable Version  

Software Technologies Track Overview


ST: Software Technologies


Patricia McBride, Pere Mato


This track presents modern techniques for software design and modern tools and technologies for understanding and improving existing software. The emphasis will be placed on the large software projects and large executables that are common in HEP. The track will consist of lectures and exercises. The first 3 lectures cover a series of tools and techniques which will be exemplified during the initial series of exercises. These lectures will include topics such software engineering, design, methodology and testing. The second series lectures will address issues when working with large software systems, including testing and methods for analyzing and improving their structure. The final 3 lectures will focus on a number of technologies that are relevant and commonly used for building interactive and distributed applications.

In the exercise sessions, the students will have a chance to use the tools that are described in the lectures. They will work configuration management tools. They will be asked to use the test and debugging tools on some simple examples. By showing how these tools can locate known problems, students will learn how to use them on new problems. Students will then be given a functional program and a brief description of what it does. The goal is to extend the program to handle a larger problem domain. In the final exercise sessions, the students will practice the new technologies introduced with examples. For these exercises the Python language will be used.



Tools and Techniques Series




These lectures present tools and techniques that are valuable when developing software for high energy physics.  We discuss how to work more efficiently while still creating a high quality product that your colleagues will be happy with. The exercises provide practice with each of the tools and techniques presented, and culminate in a small project.







Software Evolution and Testing Series




The lectures on "Software Evolution and Testing" are focused on the activities that characterize a software system, once it comes to life and its source code is available for analysis and manipulation. The quality requirements on the software can be enforced by continuously improving its internal structure (refactoring) and by exercising it dynamically



Software refactoring:
Refactoring is the process of modifying the code so that the external behavior is not altered, while the internal structure is improved.
In this lecture, some examples of code refactoring will be presented with reference to the Object Oriented programming paradigm. They will be introduced on a small program, used throughout the lecture.



Testing techniques
Testing aims at revealing the presence of defects in a software system. While black-box testing techniques verify the compliance of the software with respect to the specifications (functional testing), white-box techniques are based on the analysis of the internal structure of the software. In this lecture, the main white-box testing techniques (e.g., path testing, data flow testing) will be surveyed. A brief presentation of the ongoing research in automated test case generation concludes the lecture.

Software Engineering Series




An introduction to the principles of Software Engineering, with emphasis on what we know about building large software systems for high-energy physics.  These lectures cover the principles of software engineering, design, methodology and testing.



Introduction to Software Engineering



Software Design, Long-term Issues of Software Building

Technologies for Interactive & Distributed Computing Series

A. Pfeiffer




Python scripting language
In the first session an introduction to Python, an object-oriented interpreted language will be given. After an introduction into the syntax of Python including data types, functions, control structures (like if, for, try) the aspect of loadable modules will be presented. An introduction into basic File I/O and object persistency in Python will be followed by an introduction to classes, inheritance and other object-oriented aspects of Python. The session will finish with an overview of ways to extend Python through extensions written in other languages such as C and C++.



XML and related technologies (XSLT, ...)
The second session will introduce XML, the eXtensible Markup Language, as a standard for document markup. XML defines a generic syntax to mark up data with simple, human readable tags; thus providing a flexible standard format for a variety of application domains. The session will introduce the fundamental entities of XML, ranging from elements and attributes, through namespaces to Document Type Definitions (DTDs) and the definition of a valid XML document. Based on this, the session will then look into the area of styling XML documents using the eXtensible Stylesheet Language (XSL) in it's forms of XSLT and XSL-FO. Extensions to XML like XPath, XLink and XPointer will be discussed in the context of Data-centric Documents. The session will conclude with an overview of the DOM and SAX models of representing the structure of an XML document.



Distributed computing technologies and protocols (SOAP, XMLRPC, Web services, ...)
Web services provide a standard means of communication among different software applications, running on a variety of platforms and/or frameworks. We will cover the definitions of the World Wide Web Consortium (W3C) of Web Services and give an overview of their architecture. We show how XML is used in the context of web services and discuss two major protocols to interchange data between applications/web-services: XML-RPC and SOAP. The various roles which software agents can have in the basic architecture (Service requestor, Service provider and Discovery agency) are discussed as well as model and XML format for describing Web services like the Web Service Description Language (WSDL) and . WSDL enables one to separate the description of the abstract functionality offered by a service from concrete details of a service description such as "how" and "where" of that functionality.





Tools and Techniques Series





Exercises on Tools and Techniques



Technologies for Interactive & Distributed Computing Series

A. Pfeiffer




Exercises on Technologies for Interactive & Distributed Computing









Total hours



Last edited: 31-Aug-04 .

Feedback: Computing (dot) School (at) cern (dot) ch
Last update: Thursday, 14. November 2013 11:48

Copyright CERN