Luca Pegolotti – Parallel software development

    About : Siemens, Munich, Allemagne


My internship took place from the 8th February 2016 to the 5th August 2016 at Siemens, in Munich.
Siemens is a widely known german multinational company operating in the technology sector. The business activities of Siemens can be divided into 9 divisions: Power and Gas, Wind Power and Renewables, Power Generation Services, Energy Management, Building Technologies, Mobility, Digital Factory, Process Industries and Drives, Financial Services and Healthcare.

During my stay I worked in the research and development unit, i.e. Corporate Technology, which offers technical consulting and develops tools for the business units.

More specifically, I worked on EMB², an open source C/C++ parallel library that is being developed within the Smart Embedded System group. More information about the library can be found in the public repository at http://github.com/siemens/embb.

The tasks I was assigned to may be generally divided into two categories.

Firstly I worked on the library itself, especially during the first three months. I implemented some blocking data structures that could be safely accessed by more threads at the same time, thus avoiding races conditions. I then adapted some existing code that checked an important property of concurrent data structures (linearizability) so that it could be used to test the ones included in the library.

Secondly, I used EMB² in different projects. Two of these consisted of modifying frameworks developed within Siemens so that they could be run in parallel using the features offered by the library. Another task I worked on was the creation of a tutorial application that could show how to use the library to create some appealing result. The tutorial consisted in a video processing application in which some filters I coded were applied in parallel to an input video file. Since I considered independent frames, filters could be applied to multiple images at the same time.

David Rivollet – Internship in software development and machine learning

About : Technis,


I did my internship in Technis SA which is a start-up founded in 2015 by three former EPFL students. Their objective is to infuse technology in sports and particularily in tennis by developing a connected floor which allows the players to have a live time arbitrage and its games’ statistics.

The major part of my work was to develop mobile phone and tablet apps used as the user interface of MyTechnisPad. I worked closely with the app developer of Technis SA. The first application developed on Android Studio in Java regroups all the information of a player training session and statistics generated with the use of the Pad. The second application, developed for tablets, is an app especially designed for the trainer’s use. Trainers can program their futur training sessions presetting the app according to the training’s stage using MyTechnisPad. These applications have been entirely designed during my internship.

The second job of my internship was to perform some machine learning in order to extract features on data obtained with the Pad. One application, for example, was to recognize the pressure of a human foot and determine who was walking on the connected surface by analyzing the specifics of its feet. Other applications as gait analysis or tracking were also explored by the team.

My third role in the start-up during the internship was to design the images and logos used, for example, during the pitches made by the founders or in the apps interfaces. This also applies to redesigning the business cards of the company.



Benjamin Beck – Developing a Matlab and Java algorithm for semi-automated pixel classification

  About : Bracco, Plan-les-Ouates (GE), Suisse



Bracco Suisse SA is located in Plan-les-Ouates (GE), and its Research and Development center is specialized in contrast ultrasound research. My internship took place at the Physics and Software Engineering group, and I was supervised by Peter Frinking and Gilles Casqueiro. The main aim was to improve segmentation of positively stained pixels in immunohistochemical-stained images. Firstly, a review of image segmentation based on supervised machine learning algorithm was needed. Secondly, prototypes of candidate methods were implemented and tested using Matlab. Finally, the best solution was implemented in Java, which will be incorporate in a main software application. During this internship, I acquired new skills both technical (Software engineering, Matlab) and professional (team working, oral skills).


Figure 1: 
Example of an immunohistochemical-stained image. Positively-stained pixels are colored in brown.



Figure 2: Segmented image.



Stefano Savarè – Garbage-collecting C++ objects in Python: a case study using the GridTools library.


About : CSCS, Lugano, Suisse




The Swiss National Supercomputing Centre (CSCS) is the national high-performance computing centre of Switzerland. Operated by the ETH Zurich, it is located in Lugano, canton Ticino.

The interaction between the GridTools, a fast C++ library for implementing PDE solvers, and its Python interface (GridTools4Py) requires the continous creation (allocation) and destruction (deallocation) of several memory objects.

This overhead is the direct result of interfacing a high-level language like Python with a low-level language like C++. The primary objective of this internship is to improve the speed and memory performance of the interaction between these two languages. Specifically, this internship explores different approaches to bridge the gap between two different memory management paradigms: garbage-collected and manual (de)allocation.

After an initial review of the state-of-the-art, one particular technology was used to implement a link between Python objects and their C++ counterparts.

The results show a 7% improvement in the average running time over a set of different test cases and up to a 30% speed-up in the interaction time of the two libraries.

The proposed solution also improves the memory footprint compared to the implementation currently in place.

Speed-up obtained in the execution time of the interaction part between the two libraries after my work.

Przemyslaw Juda – Cold plasma and transport simulations for high quality coatings of superconducting radiofrequency accelerating cavities

   About : CERN, Meyrin (GE), Suisse



I did my internship at CERN (European Organization for Nuclear Research based in Geneva) in the The Surfaces, Chemistry and Coatings (SCC) section. CERN is a European laboratory focused on the fundamental particle physics research. State of the art technology is needed at CERN to run the beam in the Large Hadron Collider. It includes radiofrequency (RF) cavities, which are components generating an oscillating electric field that accelerates the charged particles. The SCC section is responsible for deposition of high quality thin films for accelerator applications. The deposition of niobium thin film on copper cavities is achieved by means of cold plasma sputtering.

My work consisted of simulating plasma discharge and niobium transport phenomena using Direct
Simulation Monte Carlo/Particle-In-Cell Monte Carlo (DSMC/PIC-MC) software. It is a multiscale simulation: plasma phenomena have shorter characteristic times of evolution than transport phenomena, therefore they can be decoupled. I simulated two types of cavities: High Intensity and Energy Isolde quarter wave resonator and a prototype elliptical cavity.

The obtained plasma distribution (Figure 1) in the elliptical cavity indicates that there are some cyclic changes in the plasma density. The output from transport simulation (DSMC) served as an input for a kinetic Monte Carlo calculation. In this way I obtained a structure of the niobium thin film. The simulation showed that grown film is tilted (Figure 2), which is due to the geometry of the cavity and is an undesired effect which negatively affects the properties of the coating. The simulations will help to optimize the coating process (for instance the geometry of the coating set-up) and assess the properties of the film.

Figure 1    

Figure 2

Paul Rolland – Software Developer for C++ Restful API

About : nViso, the Innovation Park at EPFL, Lausanne



I did my internship in the start-up called nViso, which is located in the Innovation Park at EPFL. This company works on face detection an emotion recognition using state of the art knowledge in machine learning. Their technology is developed on several SDKs and is available on smartphones.

nViso already has a program for face detection and emotion recognition. However the program sometimes crashes for unknown reasons. During the first two weeks, I was intended to put this program into a Windows service in order to prevent problems due to a possible crash.

I then built a GUI application in Java for the same program using javax library. This showed me the difference between a programming project at EPFL where all aims are clear and well defined, and a professional project where everything is to be discussed and rearranged, which requires a different way to work.

This experience as intern at nViso was a good introduction into the professional world, I enjoyed working with a team of students from various horizons and I learnt many things from them. I was very interested in machine learning, and although I did not work directly on the machine learning algorithms, it was a good experience to work on such a project and observe the effectiveness of these algorithms.


Francesco Migliorini – Design and development of an online ECG compression algorithm Francesco Migliorini


   About : CSEM SA, Neuchâtel, Suisse



During the 6-months internship, I developed an algorithm for compression of ECG signals. The structure of the algorithm was found in the European Standard Communication Protocol, indeed our

Marco Martinolli – Mathematical modelling of tumor growth and neutrophil kinetics in patients treated with a cytotoxic drug

About : LYO-X GmbH, Allschwil (BL), Suisse



Blood toxicity is one of the major causes of interruption of chemotherapy for adverse event and consists in the severe reduction of blood cells consquent to the administration of an anticancer drug. The aim of the project was to develop a model which was able to predict the side effects of a treatment and the related haematoxicity risk. In this way, the therapy could be personalized on the individual response of the specific patient making the treatment safer and lasting longer in time. 

The working approach was mainly mathematical and computational, but some notions from medicine and systems biology were important to understand the dynamics of the drug. The programming was mostly in R and model building and parameter estimation were done in Monolix, a standard software for pharma-based modelling.

Stefano Ubbiali – Evaluation of a Python DSL as a prototyping environment for stencil creation

About : CSCS, Lugano, Suisse



I carried out my three-months summer internship at the Swiss National Supercomputing Centre (CSCS) in Lugano. As a unit of the Swiss Federal Institute of Technology in Zurich (ETH Zurich), CSCS develops supercomputing tools and capabilities which are then made available to international researchers through a scientific user lab.

Throughout the internship I worked on GridTools4Py – a Python Domain Specific Language (DSL) for stencilbased codes. Provided with three backends (Python, C++ and CUDA), it offers a high-level interface to the C++ library GridTools. Both GridTools and its Python API have been developing at CSCS. Specifically, the main objective of my internship was to evaluate GridTools4Py from a user point of view. For this aim, we developed two finite-difference solvers for the inviscid two-dimensional Burgers’ equations and the ShallowWater Equations on a rotating Sphere (SWES). Starting from already existing MATLAB codes, we first translated them in Python using the scientific computing NumPy package, then we focused on GridTools4Py implementations. Moreover, we extend the SWES solver to deal with the poles.

The solvers were tested on benchmarking problems. The figure below shows the fluid height after a 14 days simulation of the sixth initial condition proposed byWilliamson in his suite of standard test cases for shallow water equations. Then, we compared the three implementations (MATLAB, NumPy, GridTools4Py) in terms of numerical results, run time and memory footprint. Although they all provided the same level of accuracy, the C++ backend of GridTools turned out to be themost performant – about 30% faster than MATLAB.

Finally, I provided the GridTools4Py developers feedback on its user-friendliness and its suitability for solving real problems. Furthermore, some of the scripts I coded which are not working with the current implementation of GridTools4Py will be used as assessment tests for future versions of the DSL.

Maximilian Mordig


About : SAPHETOR, EPFL Innovation Park, Suisse



I spent my internship at Saphetor SA, EPFL Innovation Park. The company is active in the field of genomics and bioinformatics. More precisely, given small chunks of DNA of a person, it tries to figure out all the mutations/variants the person has. This is consequently used to diagnose possible future (hereditary) diseases.

To classify such variants, alignment algorithms are used, and the results are compared to a golden list with the ultimate truth. It turns out that there are still a few cases where the in-house software is not accurate and for now still brings in external software to mitigate this problem. The goal of the internship was to document and rewrite the written code, analyze the failure cases and to come up with alternative methods to improve the variant classification accuracy. Whilst I was not able to fully eliminate the errors, I was able to give clear indications on what does not work well, what needs to be verified next. In parallel, I developed tools to simplify future analysis of the algorithms.

The internship demonstrated to me that real systems are often quite complex to analyze and that a lot of interaction with the team is necessary to work effectively. It allowed me to appreciate the work in a company. I learned reading huge and complex quantities of code and improved greatly my system programming skills (Linux).


Integrative Genomics Viewer software used to analyze the failure cases, taken from https://ocg.cancer.gov/sites/default/files/igv%20figure%205.JPG


Davide Pradovera – Software development for water network optimization


  about : IRETI, Italie



I carried out my internship at IRETI, Italy, whose main interest is the management of various public services (e.g. water and gas supply) in several italian cities and in the correponding districts.

The objective of my internship was the development of a software which could allow the optimal management of the water distribution system of the city of Piacenza. The company was interested in this project as a way to fight the deteriorating water quality of the city, which can be seen in Figure 1 (left): all the red dots represent users which are receiving water whose quality is below the threshold set by the company.

We approached this issue by defining a suitable optimization problem, and by developing a software which could solve such a problem by using a Python interface with the professional hydraulic software EPANET. The solver implements an ad hoc version of the simplex algorithm, optimized for the case of expensive black-box objective functions. The solution we found for the case at hand is shown in Figure 1 (right).

In the last part of the internship, we analysed how the solution found previously affects the underlying aquifer. To preserve the quality of the aquifer, we proposed to introduce a hydraulic barrier, whose position and size were found by solving an appropriate constrained optimization algorithm. This was done by implementing an ad hoc Python solver, based on Sequential Quadratic Programming (SQP).



Water quality before the optimization (left) and for the optimal solution (right). In red the points exceeding the threshold.