Descrizione dell'insegnamento |
Insegnamento obbligatorio della Laurea Magistrale in Ingegneria Informatica, collocato al I anno. Partendo dall’architettura dei sistemi operativi, il corso analizza gli aspetti più importanti dei moduli interni e approfondisce i concetti e le tecniche di gestione efficiente delle risorse di comunicazione tra processi. Viene introdotto il linguaggio C++ che oltre al C è il più usato nella programmazione di sistema. Il sistema Android viene preso in esame per illustrare la programmazione di sistema in Java. |
Prerequisiti |
Conoscenza del linguaggio C e Java
Conoscenza di Sistemi Operativi |
Contenuti |
La didattica è organizzata in modo tale che ogni corso di studio venga erogato tre volte l’anno e ciascuna erogazione duri due mesi e mezzo. Il sistema consente sempre agli studenti di avere accesso ai contenuti, ma durante il periodo di erogazione, lo studente viene inserito in una classe dove al massimo sono presenti 20 allievi, in cui svolgere le attività organizzate nel tempo con la guida di un tutor esperto della materia che segue i processi di apprendimento. Questo modello di erogazione è stato adottato per consentire agli studenti di iscriversi durante tutto l’anno all’Università e di avere la possibilità di entrare nelle classi a seconda del periodo in cui si iscrivono. Il presente corso, che fornisce 9 crediti formativi, è composto da 27 videolezioni, da vedere due volte, per un totale minimo di 54 ore di attività dello studente.
Lezione n. 1: Cenni introduttivi alla Programmazione di Sistema
Lezione n. 2: Il modello di esecuzione
Lezione n. 3: Allocazione della memoria - parte I
Lezione n. 4: Allocazione della memoria - parte II
Lezione n. 5: Introduzione al linguaggio C++
Lezione n. 6: Gestione delle eccezioni
Lezione n. 7: Composizione di oggetti
Lezione n. 8: Ereditarietà e polimorfismo
Lezione n. 9: Funzioni e operatori
Lezione n. 10: Programmazione generica
Lezione n. 11: Librerie
Lezione n. 12: Programmazione concorrente
Lezione n. 13: Sincronizzazione
Lezione n. 14: Programmazione concorrente in C++ Parte I
Lezione n. 15: Programmazione concorrente in C++ Parte II
Lezione n. 16: Programmazione concorrente in C++ Parte III
Lezione n. 17: Programmazione concorrente in C++ Parte IV
Lezione n. 18: Interprocess communication
Lezione n. 19: Ipc in windows
Lezione n. 20: Sincronizzazione in windows
Lezione n. 21: Ipc – Linux
Lezione n. 22: Introduzione ad android
Lezione n. 23: Organizzazione di un progetto android
Lezione n. 24: Attività
Lezione n. 25: Interazione tra componenti
Lezione n. 26: Concorrenza
Lezione n. 27: Servizi |
Testi |
I testi di riferimento del corso (non obbligatori e ampiamente sovrabbondanti, alcuni tradotti in Italiano) sono i seguenti, ma possono benissimo essere sostituiti dai tantissimi altri con gli stessi argomenti trattati nel corso, facendo una ricerca su Google:
Silberschatz, Galvin, Gagne, “Operating System Concepts”, John Wiley & son.
M. Kerrisk, “The Linux Programming Interface”, No Starch Press.
C. Hallinan, “Embedded Linux Primer”, Prentice-Hall.
Deitel, C++ How to Program, 9/e - Deitel & Associates, Inc.
B. Heckel, Thinking in C++ (gratuito in rete nel sito dell’autore)
M. Carli, Android 4. Guida per lo sviluppatore, Apogeo |
Esercitazioni |
Le modalità di valutazione del corso sono strutturate da 2 prove di verifica intermedie, che verranno consegnate attraverso la piattaforma UNINETTUNO e valutate dal Docente/Tutor. Tali prove di verifica, di respiro più ampio rispetto agli esercizi di autovalutazione, verteranno sugli argomenti del corso e saranno composte da programmi da sviluppare. La data limite di consegna delle prove sarà inserita nell'agenda del corso ad inizio di ogni erogazione. Lo studente è chiamato ad assegnarsi un voto al momento della consegna, voto che è "cieco" al Docente/Tutor, finché questi non completi la correzione e a sua volta assegni un voto alla prova dello studente. Questi due dati andranno quindi a popolare il grafico di valutazione dello studente presente nella schermata "Valutazioni e statistiche" del Corso. Si stima che queste prove richiederanno circa 18 ore di lavoro dello studente. La prova di valutazione finale consiste nello sviluppo di uno dei macroargomenti in cui è suddiviso il corso o parte di essi, dove lo studente, senza l’ausilio di libri o appunti, dovrà dimostrare la piena conoscenza di tutte le tematiche che caratterizzano il tema proposto e mostrare con esempi attinenti la padronanza dell’argomento. |
Docente/Tutor Responsabile insegnamento |
Claudio Fornaro
|
Docenti video |
|
Elenco delle lezioni |
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|
|
Giovanni Malnati
|
|