ll corso, collocato al primo anno della Laurea Magistrale in Bioingegneria riunisce aspetti metodologici e tecnologici. Esso prevede, sin dal suo inizio, una stretta alternanza fra lezioni in cui vengono esposti concetti metodologici (i.e. Object Orientation, Team Work, Design Patterns, UML Modeling, Elaborazione Concorrente e Sistemi Distribuiti, Agenti, etc) ed esercitazioni in cui lo Studente è chiamato ad applicarli elaborando gli esempi proposti e sviluppando un proprio progetto.


Sistemi di Versioning e Team Work
Si fornira' una introduzione generica ai sistemi di versioning, e di supporto al lavoro di gruppo. Successivamente verra' illustrato nel dettaglio GIT attraverso esempi di funzionamento svolti in classe. GIT verra' utilizzato costantemente nel corso del semestre sia come sistema per la distribuzione degli elementi di codice su cui lavorare, sia come strumento a supporto del lavoro svolto all'interno dei singoli gruppi.

Ambiente di Sviluppo
Si fornirà una illustrazione dell'ambiente software appositamente realizzato per il corso e che verrà utilizzato dagli Studenti per sviluppare i loro prototipi di Sistemi Distribuiti Multi Agente. Sono altresì previsti alcuni richiami alla programmazione ad oggetti con particolare riferimento al Linguaggio Java volti ad approfondire aspetti funzionali alla successiva realizzazione del progetto.

Programmazione Concorrente
Verranno illustrati i principi di Programmazione Concorrente, riprendendo quanto eventualmente gia' visto nella parte A). Verra' introdotto il concetto di Processo e confrontato con quello di Thread. Infine verranno illustrate le primitive che devono essere utilizzate per coordinare l'esecuzione dei vari Thread presenti all'interno di un sistema con elaborazione concorrente.

Esercitazioni e Sviluppo Progetti in Aula
E' previsto l'uso di alcune applicazioni di esempio con il duplice scopo di analizzarne il codice e illustrare le funzionalità della libreria applicativa che consente di interagire con il broker per lo scambio dei messaggi di interazione. Tuttavia esse costituiranno anche la base per un richiamo all'uso del linguaggio di programmazione Java e ai principi di progettazione del software. Il corso prevede anche lo sviluppo di un progetto di gruppo.