Tools and Techniques for Physics Computing

Session

Description

Lecturer

Lecture 1

Lecture 2

Introduction to the Track

To start, we discuss some of the characteristics of software projects for high energy physics, and some of the issues that arise when people want to contribute to them. This forms the framework for the Software Technologies Track. We then continue with a brief introduction to software engineering from the perspective of the individual contributor, both as a formal process and how it actually effects what you do.

 

Tools You Can Use

This lecture discusses several categories of tools & techniques you can use to make yourself more productive and effective. Continuous testing and documentation has proven to be important in producing high quality work, but it's often difficult to do; we discuss some available approaches. Many problems require specific tools and techniques to solve them effectively: We discuss the examples of performance tuning and memory access problems.

 

Tools for Collaboration

HEP software is built by huge teams. How can this be done effectively, while still giving people satisfying tasks to perform?
This lecture discusses some of the technical approaches used. Source control (e.g. CVS) is becoming common, so we just skim over it's advantages and disadvantages to get to the larger area of release control (e.g. CMT) and release testing & distribution. We'll focus on why is this considered a hard problem, and what are the current techniques for dealing with it.

 

Software Engineering Across the Project

Now that we've covered both individual and group work, we go back to the software engineering topics of the first lecture to see how these fit together. How does our individual work effect the ability of the entire project to proceed? What are tools and techniques that will improve both our individual work, and out contributions to the whole?
We close with a summary of observations.

Bob Jacobsen

Exercise  1

Exercise  2

Exercise  3

Exercises 1, 2 and 3

The first two exercises provide some direct experience with the tools and techniques described in Lectures 1 and 2. Teams of two students will work together to update existing applications, working through examples designed to show the strengths and weaknesses of various tools and approaches. This will be followed by small projects for additional development experience.

Bob Jacobsen

Exercise  4

Exercise  5

Exercise  6

 

Exercises 4, 5 and 6

After the two-person teams acquire some experience with the development and release tools, we will group projects to demonstrate some of the real-world issues discussed in the lecture. Groups of two teams will first work together to create a functional release from individual sub-projects at various stages of completion to show the strengths and weaknesses of test and release tools. This is followed by a larger scale exercise with groups of five teams.

Bob Jacobsen

Prerequisite

and

References

Desirable Prerequisite

Basic programming and software engineering