The Seminar is organized in didactical units on software developed and used in fundamental and applied physics, theoretical and experimental.

The lectures also include a full school of  the Geant4 Monte Carlo simulation toolkit and a series of lessons on the basics of the GPU paralell programming. The GPU and Geant4 sections consist of a series of lectures followed by hands-on sessions. The courses aim to make the participants able to run user applications, simple but comprehensive, based on Geant4.
Lessons will be devided over 5 days (from Monday to Friday) and will also include lectures on software development in applied physics.


Geant4 ( is a software toolkit, written in C ++, for simulating the tracking of particles in the matter with the Monte Carlo approach. The software is developed and maintained by an INTERNATIONALCollaboration ( of scientists belonging to different institutions, including INFN. Geant4 can be used for applications in high energy physics, astrophysics, medical physics, particle astrophysics and nuclear physics. The software provides all the tools needed to a complete Monte Carlo simulation of the experimental set-up, including modeling of geometry, detector response, event management and user interface. In Geant4 there is a wide range of physical models capable of describing interactions of particles with matter; there are several alternative models, which can be chosen by the user for many physical processes. Geant4 source code and libraries are freely available, along with manuals, from the Geant4 HOME page.


In recent years, parallel programming has assumed a fundamental role in the development of complex applications requiring high performances. In particular, heterogeneous computing gained a lot of interest as it allows parallel calculation when different computing resources cooperate with the aim to maximize performance. In this area, programming languages that make the glue between completely heterogeneous resources plays strategic roles. Among these languages, one of the most important is surely the OpenCL standard.
The course will provide an overview of the parallel and heterogeneous programming using GPUs, CPUs and the OpenCL standard.
The aim of the course is to provide the basics for understanding and self-write a parallel application via OpenCL, through theory and guided exercises that will lead students to be familiar with the parallel approach, and will give the fundamental knowledge to write a heterogeneous computing-based program.