CODE 80302 ACADEMIC YEAR 2024/2025 CREDITS 6 cfu anno 3 INFORMATICA 8759 (L-31) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester TEACHING MATERIALS AULAWEB OVERVIEW Introduction to multihreaded programming, concurrent programming and event based programming. In this course, we will introduce the base concept linked to multicore architecture, multihreading in operating systems and in distributed algorithms and architectures for distributed systems. The course is divided into some theoretical lectures and some programming laboratories AIMS AND CONTENT LEARNING OUTCOMES Understand the problems and the used methods for the design of concurrent and asynchronous distributed programs through the study of the communnication and synchronization between processes with shared memory and between processes distributed over different platform and programed in different languages. AIMS AND LEARNING OUTCOMES The goal of the theoretical lectures is to acquire knowledge on the problems raised by concurrent programming which requires knowldege on distributed architecures, operating systems and on distributed algorithms. Moreover the theoretical part will study different levels of abstractions through the study of low level and high level libraries. The theoretical part will present as well some methods for the automatic verification of concurrent systems. The goal of the laboratories is to build different distribuited systems and to solve practical problems of concurrent programming. This course will offer the possibiltiy to the students willing to to aquire the following Open Badges: Competenza alfabetica funzionale - livello avanzato Competenza sociale – livello base Capacità di imparare a imparare - livello avanzato The students who wish to acquire the Open Badges will to prepare a presentation of two laboratories that they will have done in group and will have to correct two laboratories of other groups. PREREQUISITES Notions of programming in C and Java Operating Systems Network programming Basic concepts of comouting networks TEACHING METHODS Theoretical lecture Execises in class Exercises in laboratory SYLLABUS/CONTENT Concurrency in the OS and in mutithread systems Introduction to concurrent programming Introduction to the concurrency problems Standard synchronization library with mutex and barriers Semaphores and monitors Introduction to distributed algorithms Distributed/concurrent network programming Introduction to the theory of model-checking RECOMMENDED READING/BIBLIOGRAPHY Slides of the lecturer provided on Aulaweb Online material The Art of Multiprocessing Programming - M. Herlihy and N. Shavit. Principles of Concurrent and Distributed Programming - Mordechai Ben-Ari TEACHERS AND EXAM BOARD ARNAUD HENRI PAUL SANGNIER Ricevimento: Reception through appointment via mail. Exam Board ARNAUD HENRI PAUL SANGNIER (President) DAVIDE ANCONA GIORGIO DELZANNO (President Substitute) LESSONS LESSONS START Accordingly to the teaching calended approved by the Consiglio dei Corsi di Studio in Informatica Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The evaluation consists in a 2 hours written exam and the delivery of some laboratory works. ASSESSMENT METHODS The written exam will verify the ability of the student to use the different notions presented during the lectures and the delivery of the laboratory works will allow to cotrol that the student is able to use in pratice the presented concepts. Exam schedule Data appello Orario Luogo Degree type Note 09/01/2025 13:00 GENOVA Scritto 10/02/2025 13:00 GENOVA Scritto 09/06/2025 09:00 GENOVA Scritto 02/07/2025 09:00 GENOVA Scritto 19/09/2025 09:00 GENOVA Scritto Agenda 2030 - Sustainable Development Goals Quality education