Edited Books & Journal Issues

LNBI Vol. 9859, CMSB 2016

Vol. 4, STTT 2016

LNCS Vol. 9333, RV 2015

Vol. 236, Inf & Comp 2014

LNCS Vol. 7976, SPIN 2013

News about me !!

March 2015 - Rigorous Systems Engineering continues to rise and shine

December 2014 - "Laufbahnstelle" for Ezio Bartocci

January 2014 - Habilitation as Associate Professor in Italy

March-April 2013 - My GPU simulations featured on Cover of Transactions on Computational Biology and Bioinformatics

Nov. 2011 - Post Doc of the Month (Interview)

Sep. 2011 - Best Paper Award (RV 2011)

July 2011 - From chaos to cures (Cornell University)

Jan. 2011 - CMACS Researchers Perform First Automated Formal Analysis of Realistic Cardiac Cell Model

UNICAM news:

Counter and browser compatibility

Get Firefox!

Get Thunderbird!

Valid XHTML 1.0 Transitional

Networked Embedded Systems (182.717) - (6 ECTS) - (TISS Website) (TI Website)
Ezio Bartocci

The majority of all computing devices produced nowadays, are embedded systems employed to monitor and control physical processes: cars, airplanes, automotive highway systems, air traffic management, etc.. In all these scenarios, computing and communicating devices, sensor monitoring the physical processes and the actuators controlling the physical substratum are distributed and interconnected together in dedicated networks. The lab course Networked Embedded Systems treats the design and implementation of embedded systems in a distributed real-time environment.

Subject of course

Students work in groups of three on an embedded systems project. A project develops a distributed control application on a custom-made microcontroller board. Each group defines its project goals individually. Collaboration within groups is enforced through the definition of roles (project manager, system architect, documentation responisble). Collaboration among groups is enabled through workshops discussing the technical challenges and solutions of the groups. A project encompasses three phases:

  • Design;
  • Implementation;
  • Analysis;

Examples of Projects
ArduGlove: one of the projects assigned to my students of Networked Embedded Systems
(Fall 2013)
Muscles2Hexapod: one of the projects of my course on Networked Embedded Systems
(Fall 2014)
GPU Computing and Architectures (182.731) - (6 ECTS) - (TISS Website) (TI Website)
Ezio Bartocci

Graphics processing units (GPUs) were originally developed as specialized electronic circuits for fast image processing and graphics rendering. GPUs are nowadays heavily employed for all the general purpose applications that require high-performance computational power, because their highly parallel structure makes them more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel. GPUs are becoming a valid alternative to the classic CPU-based supercomputer clusters also for the improved energy-consumption/performance ratio and their lower cost. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles. The aim of the course is to provide students with a general overview about this emerging multi-core parallel computing architecture. The objectives of this course are:

  • gaining understanding of GPU computer architecture;
  • getting familiar with GPU programming environments;
  • implementing programs solving problems that would classically have been run on supercomputers;
Basic notions of Computer Architectures and a good knowledge of C programming are expected, as all the programming will use environments building on C.

Subject of course

The course will start with an introduction on the modern GPU architectures, by tracing the evolution from the SIMD (Single Instruction, Multiple Data) architecture to the current architectural features and by discussing the trends for the future. We then will explore the two main Programming Models: CUDA and OpenCL. Real case studies will expose students to the potential applications of this technology. A final project will give them the possibility to make a concrete experience of the concepts taught, to solve a modest GPU programming problem that will be assigned by the teacher or proposed by the student, to present it at the end to the class. This is the list of the main topics of the course:

  • GPU Architectures (NVIDIA Fermi, NVIDIA Kepler, ATI/AMD);
  • CUDA Programming Model;
  • OpenCL Programming Model;
  • Case Studies (Graph exploration, Path Planning, Curvature Analysis, Signal Processing, PDE Solvers)
  • Optimizing GPU performance

Project Example
Visual Rendering of 3D Heart Simulations
(Summer 2013)
Operative Systems (182.711) - (2 ECTS) - (TISS Website) (TI Website)
Ezio Bartocci, Peter Puschner

Students should develop the following skills/acquire a good knowledge of:

  • the role and the functions of operating systems;
  • design decisions for the management of OS resources;
  • mechanisms for the coordination of and the synchronization between parallel processes;
  • network communication and OS security

Subject of course

This is the list of the main topics of the course:

  • introduction to operating systems (definition, history, important abstractions, OS architectures);
  • processes and threads (process states, data structures and mechanisms for process management, multithreading);
  • process synchronization and deadlock (mutual exclusion & condition synchronization, synchronization mechanisms and constructs, synchronization problems: producer-consumer, reader-writer, dining philosophers, deadlock, deadlock conditions, deadlock avoidance, deadlock prevention, deadlock detection;
  • memory management (allocation, relocation, segmentation, paging, virtual memory management, page replacement, protection and sharing);
  • input-output and disk management (devices and device characteristics, I/O operations, drivers, buffering, disks, file systems, file system organization);
  • networking (introduction, protocols, OS and networking);
  • security and protection (threats, security measures, design for security, access control, authentification, encryption)
Didactic concept: The listed topics will be introduced in the lecture, illustrative examples will be presented. Selected programming problems will be assigned in the accompanying lab course.

Runtime Verification (182.741) - (3 ETCS) - (TISS Website)
Ezio Bartocci, Dejan Nickovic

Runtime verification is concerned with the analysis of software or hardware at execution time. It is based on extracting information from a running system and monitoring if the observed behaviors satisfy or violate the properties of interest. These techniques are critical for system correctness, reliability, security, and robustness. They are more practical than exhaustive formal verification and more versatile than conventional testing. During the last decade, many important tools and techniques have been developed and successfully employed in several application domains that go beyond the program verification: mixed-signal analysis, falsification analysis of cyber-physical and biological systems, signal processing and music detection. This course offers an introduction to both the theory and practice about monitoring techniques for software and hardware.

Subject of course

The course will start with an introduction on the areas where the verification should be preferable addressed at runtime. We will then discuss some techniques of software system instrumentation. We will then explore different specification languages to specify the properties to be monitored and the related available monitoring techniques. Real case studies will expose students to the potential applications of these technologies. A final project will give them the possibility to make a concrete experience of the concepts taught. This is the list of the main topics of the course:

  • Monitoring techniques (state machines, rewriting logics, dynamic programming);
  • Monitoring software programs;
  • Monitoring Mixed-Analog Signals;

Embedded Systems Engineering (182.722) - (3 ETCS) - (TISS Website)
Ezio Bartocci

This is a lab course (LU) that accompanies the theoretical (VO) course of Embedded Systems Engineering. The knowledge obtained in the theoretical course is put into practiced in exercises and made concrete in a term project by the usage of industrially relevant tools and technologies. The aim of this course is to offer a practical training on advanced topics related to the design, implementation and verification of embedded systems.