Vai al contenuto principale
Oggetto:
Oggetto:

Modelli Concorrenti e Algoritmi distribuiti

Oggetto:

Concurrent Models and Distributed Algorithms

Oggetto:

Anno accademico 2023/2024

Codice attività didattica
MFN0960
Docente
Elvio Gilberto Amparore (Titolare)
Corso di studio
[008515] Laurea magistrale in informatica
Anno
1° anno, 2° anno
Periodo
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
6 CFU (Ore aula: 48)
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto più orale facoltativo
Prerequisiti

I prerequisiti per il corso sono la nozioni di base della struttura degli elaboratori, delle reti di calcolatori, dei Sistemi Operativi e una buona familiarità con i linguaggi di programmazione.
Sono richieste inoltre conoscenze di matematica discreta, ed elementi di base di analisi degli algoritmi.

Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Non é richiesto nessun particolare insegnamento della laurea magistrale.


The prerequisites for the course are a basic understanding of computer structure, computer networks, operating systems, and a good familiarity with programming languages. Additionally, knowledge of discrete mathematics and basic elements of algorithm analysis are required.

Preparatory courses (provide the expected competencies upon entry): No specific course from the master's degree is required.

Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

DSA o Disabilità: Sostegno e Accoglienza in UniTO e supporto in sede di Esame
Oggetto:

Obiettivi formativi


In riferimento agli obiettivi formativi specifici del CdS in Informatica (LM18), il corso ha due obiettivi formativi principali:

  1. fornire le metodologie e gli strumenti di base per la Programmazione Concorrente;
    l'enfasi è posta non sulla programmazione in uno specifico linguaggio concorrente, ma sui vari modelli cui i linguaggi concorrenti fanno riferimento. Lo studio di questi modelli riguarda principalmente i costrutti per esprimere la concorrenza dei processi e le loro possibili interazioni. L'analisi viene effettuata esaminando un insieme di esempi che coprono un'area significativa di applicazioni e confrontando varie soluzioni nell'ambito di uno stesso modello e tra i vari modelli.
  2. introdurre la progettazione e l’analisi degli Algoritmi Distribuiti.
    Viene presentata una collezione significativa di Algoritmi Distribuiti, rappresentati mediante un modello teorico; l’uso di questo modello permette di formalizzare in maniera adeguata le dimostrazioni di correttezza e l’analisi di complessità.

Un ulteriore obiettivo riguarda la capacità di comunicare, a interlocutori specialisti e non specialisti, le conoscenze acquisite in modo chiaro e privo di ambiguità.

With regards to the specific educational objectives of the Master's degree course in Computer Science (LM18), the course has two main educational objectives:

  1. To provide the basic methodologies and tools for Concurrent Programming. The emphasis is not placed on programming in a specific concurrent language, but on the various models that concurrent languages refer to. The study of these models mainly concerns the constructs for expressing process concurrency and their possible interactions. The analysis is carried out by examining a set of examples that cover a significant area of applications and comparing various solutions within the same model and among the various models.
  2. To introduce the design and analysis of Distributed Algorithms. A significant collection of Distributed Algorithms is presented, represented by a theoretical model; the use of this model allows for the formalization of correctness proofs and complexity analysis in an appropriate manner.

An additional objective concerns the ability to communicate the acquired knowledge clearly and unambiguously to both specialist and non-specialist interlocutors.

Oggetto:

Risultati dell'apprendimento attesi


CONOSCENZA E CAPACITÀ DI COMPRENSIONE
Capacità di utilizzare in maniera adeguata gli strumenti per esprimere e gestire la concorrenza, e di valutare algoritmi concorrenti e distribuiti utilizzando come criteri la correttezza, la modularità, la potenza espressiva, la facilità d'uso, l'affidabilità. Saranno a conoscenza delle problematiche e dei risultati di impossibilità connessi al disegno di tali algoritmi in vari ambienti di rete (sincroni, asincroni, ..)

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
Capacità di realizzare algoritmi concorrenti e distribuiti, e di scriverne di nuovi. Familiarità con le principali problematiche affrontate dagli algoritmi distribuiti: mutua esclusione, trattamento del deadlock, elezione del leader, problema del consenso, ecc...

AUTONOMIA DI GIUDIZIO
Valutazione della correttezza di algoritmi tramite dimostrazioni formali e metodi automatici.

ABILITÀ COMUNICATIVE
Le studentesse e gli studenti sapranno presentare ed esporre una relazione sugli argomenti del corso, utilizzando un linguaggio scientifico adeguato ed efficace.

CAPACITÀ DI APPRENDIMENTO
Acquisizione di capacità autonome di apprendimento e di autovalutazione della propria preparazione teorica e pratica, identificazione di risorse e materiali rilevanti, e definizione di obiettivi chiari nella progettazione e analisi di algoritmi eseguiti in ambienti concorrenti e distribuiti.



KNOWLEDGE AND UNDERSTANDING
Ability to properly use tools to express and manage concurrency, and to evaluate concurrent and distributed algorithms using criteria such as correctness, modularity, expressive power, ease of use, and reliability. Students will be aware of the issues and impossibility results associated with designing such algorithms in various network environments (synchronous, asynchronous, etc.).

APPLYING KNOWLEDGE AND UNDERSTANDING
Ability to implement concurrent and distributed algorithms, and to develop new ones. Familiarity with the major issues faced by distributed algorithms, such as mutual exclusion, deadlock handling, leader election, consensus problem, etc.

INDEPENDENT JUDGEMENT
Evaluation of algorithm correctness through formal demonstrations and automatic methods.

COMMUNICATION SKILLS
Students will be able to present and discuss a report on course topics using appropriate and effective scientific language.

LEARNING SKILLS
Acquisition of autonomous learning and self-evaluation skills of one's theoretical and practical preparation, identifying relevant resources and materials, and setting clear goals in the design and analysis of algorithms running in concurrent and distributed environments.

Oggetto:

Programma

Concetti fondamentali di Programmazione Concorrente: Processi Concorrenti, Architettura di una macchina concorrente, Costrutti Linguistici per la Programmazione Concorrente. Modello a Memoria Comune: Semafori, Monitor. Modello a Rete: Modelli a Scambio di Messaggi, Primitive Asincrone, Primitive Sincrone, Chiamate di Procedura Remota. Algoritmi distribuiti: Modelli di sistemi distribuiti: sincroni, asincroni con memoria comune, asincroni a rete. Valutazione delle prestazioni e correttezza. Algoritmi di elezione, Algoritmi di M.E., Algoritmi fault tolerant: il problema del consenso.

Concurrent programming: concurrent processes, architecture of a concurrent machine Concurrent programming primitives. Shared memory model: sempahores, monitors. Network model: asynchronous send-receive, synchronous send-receive, rendez-vous, remote procedure call. Models of distributed systems: synchronous model, asynchronous network model, asynchronous shared memory model Distributed algorithms: leader election algorithms, mutual exclusion algorithms, fault tolerant algorithms: the consensus problem.

Oggetto:

Modalità di insegnamento


La parte relativa alla Programmazione Concorrente viene svolta tramite lezioni frontali, con l'ausilio di lucidi, completate con esercizi commentati e svolti dal docente. Come esercitazione viene proposto lo studio di un sistema concorrente. Le studentesse e gli studenti saranno invitati a sottoporre, entro date prestabilite, le loro soluzioni utilizzando via via i costrutti visti a lezione. Dopo tali date alcune esercitazioni saranno riservate a esaminare e a commentare collegialmente le soluzioni proposte. L’introduzione agli Algoritmi Distribuiti viene svolta tramite lezioni frontali; un sottoinsieme di Algoritmi Distribuiti viene trattato all’interno di un ciclo di seminari che coinvolge la componente studentesca. Le studentesse e gli studenti che intendono partecipare all’attività seminariale, approfondiscono un particolare algoritmo, con l’aiuto e la supervisione del docente ne preparano una presentazione con i lucidi e lo espongono alla classe; all’esposizione segue una discussione con tutti i presenti. La partecipazione attiva ai seminari non è obbligatoria, ma per coloro che vi aderiscono è richiesta la frequenza all’intero ciclo di seminari. La frequenza alle altre lezioni è facoltativa. A meno di nuove restrizioni da parte dell'Ateneo, le lezioni in presenza saranno registrate (e se possibile trasmesse in streaming), e la registrazione sarà a disposizione degli studenti tramite la piattaforma Moodle.



The part regarding Concurrent Programming is conducted through frontal lessons, with the help of slides, completed with commented exercises carried out by the teacher. The study of a specific concurrent system is proposed as an exercise. Students will be invited to submit their solutions, using the constructs seen in class, within predetermined deadlines. After these deadlines, some lessons will be reserved to collectively examine and comment on the proposed solutions. The introduction to Distributed Algorithms is conducted through frontal lessons; a subset of Distributed Algorithms is covered within a cycle of seminars involving the students. Students who intend to participate in the seminar activity will study a particular algorithm, prepare a presentation with slides with the help and supervision of the teacher, and present it to the class; a discussion follows with all present. Active participation in seminars is not mandatory, but for those who join, attendance throughout the seminar cycle is required. Attendance at other lessons is optional. Unless there are new restrictions from the University, in-person lessons will be recorded (and if possible streamed) and the recording will be available to students through the Moodle platform.

Oggetto:

Modalità di verifica dell'apprendimento


L’esame si articola in due fasi, con un unico verbale. La prima fase consiste nello svolgimento di una prova scritta e la seconda in una prova orale; entrambe le prove verteranno sull’intero programma del corso. Saranno ammessi alla prova orale gli studenti che hanno consegnato (non necessariamente superato) la prova scritta. Nella prova orale, oltre alla verifica dei contenuti teorici di Programmazione Concorrente e Algoritmi Distribuiti, si darà spazio anche al commento della prova scritta. La prova scritta e la prova orale si terranno in date ravvicinate e devono essere sostenute nello stesso appello; non sarà quindi possibile sostenere la prova scritta in un appello e la prova orale in un appello successivo. Il voto finale, espresso in trentesimi, terrà conto di entrambe le prove (scritto e orale). La votazione per la parte di Programmazione Concorrente incide per 2/3 sul voto finale, mentre la parte sugli Algoritmi Distribuiti incide per 1/3. Esoneri. Coloro che hanno seguito le esercitazioni di Programmazione Concorrente e consegnato entro i termini gli esercizi proposti potranno sostenere una prova d’esonero scritta che si terrà alla fine dello svolgimento delle lezioni su questa parte del corso (approssimativamente fine novembre/inizio dicembre). Il superamento di tale prova esonera dalla parte di esame (scritto e orale) relativo alla Programmazione Concorrente. La votazione della prova d’esonero, espressa in trentesimi, farà media (con peso 2/3) con l’esito della prova d’esame sugli Algoritmi Distribuiti. La partecipazione (facoltativa) al ciclo di seminari sugli Algoritmi Distribuiti sarà valutata (in trentesimi) tenendo conto della padronanza dei concetti esposti, della completezza della presentazione, della chiarezza espositiva, dell’efficacia degli esempi forniti, della capacità di stimolare la discussione in classe. La valutazione positiva esonera della parte di esame (scritto e orale) riguardante gli Algoritmi Distribuiti e farà media (con peso di 1/3) con l’esito della prova d’esame riguardante la Programmazione Concorrente.


The exam consists of two parts, with a single final grade. The first part consists of a written test and the second part is an oral test; both tests will cover the entire course program. Students who have submitted (not necessarily passed) the written test will be admitted to the oral test. In the oral test, in addition to verifying the theoretical contents of Concurrent Programming and Distributed Algorithms, space will also be given to the commentary on the written test. The written test and the oral test will be held on close dates and must be taken in the same session; therefore, it will not be possible to take the written test in one session and the oral test in a subsequent session. The final grade, expressed on a scale of thirty, will take into account both tests (written and oral). The grade for the Concurrent Programming part counts for 2/3 of the final grade, while the grade for the Distributed Algorithms part counts for 1/3. Exemptions. Those who have attended the exercises of Concurrent Programming and submitted the proposed exercises within the deadlines can take a written exemption test that will be held at the end of the lessons on this part of the course (approximately at the end of November/beginning of December). Passing this test exempts from the exam part (written and oral) related to Concurrent Programming. The grade for the exemption test, expressed on a scale of thirty, will be averaged (with a weight of 2/3) with the result of the exam on Distributed Algorithms. Participation (optional) in the series of seminars on Distributed Algorithms will be evaluated (on a scale of thirty) taking into account the mastery of the concepts presented, the completeness of the presentation, the clarity of the exposition, the effectiveness of the examples provided, and the ability to stimulate discussion in class. A positive evaluation exempts from the exam part (written and oral) concerning Distributed Algorithms and will be averaged (with a weight of 1/3) with the result of the exam on Concurrent Programming.

Testi consigliati e bibliografia



Oggetto:
Libro
Titolo:  
Principles of Concurrent and Distributed Programming. 2 edition.
Anno pubblicazione:  
2005
Editore:  
ADDISON-WESLEY
Autore:  
Ben-Ari
Obbligatorio:  
No


Oggetto:
Libro
Titolo:  
Distributed Algorithms
Anno pubblicazione:  
1996
Editore:  
WILEY & SONS
Autore:  
Nancy A. Lynch
Obbligatorio:  
No


Oggetto:
Ultimo aggiornamento: 11/09/2023 08:45
Location: https://magistrale.informatica.unito.it/robots.html
Non cliccare qui!