Seleziona l'Anno Accademico:     2017/2018 2018/2019 2019/2020 2020/2021 2021/2022 2022/2023
Docente
DIEGO ANGELO GAETANO REFORGIATO RECUPERO (Tit.)
Periodo
Secondo Semestre 
Modalità d'Erogazione
Convenzionale 
Lingua Insegnamento
ITALIANO 



Informazioni aggiuntive

Corso Percorso CFU Durata(h)
[60/79]  INFORMATICA APPLICATA E DATA ANALYTICS [79/00 - Ord. 2021]  PERCORSO COMUNE 6 48

Obiettivi

CONOSCENZA E CAPACITA' DI COMPRENSIONE: Il corso ha l''obiettivo di insegnare allo studente i fondamenti dell'architettura dei calcolatori e delle piu' recenti GPU e costruire solide basi per la comprensione delle problematiche di implementazione dei linguaggi di programmazione mostrando l'evoluzione della tecnologia e degli strati astratti su cui si basano le architetture.

CAPACITA' APPLICATIVE: lo studente deve essere in grado di usare i simulatori e gli assemblatori mostrati programmando con i linguaggi per microarchitettura e assemblativo. Lo studente avrà il supporto nell'installazione e nell'utilizzo di tali simulatori e assemblatori e dei linguaggi per microarchitetura e assemblativo. La conoscenza sulle architetture consentirà allo studente di progettare e ottimizzare al meglio sistemi software.

AUTONOMIA DI GIUDIZIO: il corso si propone di stimolare gli studenti proponendo esercizi e software da implementare potendoli testare nei simulatori e assemblatori mostrati per autonomamente giudicare il proprio lavoro. Inoltre, la comprensione dell'evoluzione delle architetture dei calcolatori e delle GPU servirà per capire le best practices e le migliori strategie di programmazione e ottimizzazione.

ABILITÀ NELLA COMUNICAZIONE: lo studente deve essere in grado di esprimere con appropriata terminologia i concetti fondamentali dei livelli che compongono l'architettura dei calcolatori, delle GPU, concetti di compilazione e interpretazione e dei linguaggi di programmazione visti durante il corso.

CAPACITÀ DI APPRENDERE: lo studente sarà in grado di apprendere alcuni concetti fondamentali della programmazione e della compilazione/interpretazione e attraverso l'uso dei simulatori e assemblatori rendere più efficiente i programmi sviluppati.

COMPETENZE ATTESE: Conoscenza dei livelli di un calcolatore e di una GPU; conoscenze base dei principi della programmazione e dei linguaggi di programmazione.
Inoltre, il corso stimolerà gli studenti allo sviluppo di progetti di varia natura anche tramite Arduino, Raspberry, e piattaforme robotiche come ZORABOT, estensione del robot NAO.

Prerequisiti

Conoscenza del sistema di numerazione binario.
Tanta passione, determinazione, pazienza, curiosità, interesse ed entusiasmo.

Contenuti

INTRODUZIONE AL CORSO - 2 ore

ORGANIZZAZIONE STRUTTURATA DEGLI ELABORATORI - 4 ore
Organizzazione a livelli
Architettura di von Neumann, di Harward ed esempi di organizzazione
Esecuzione: compilazione, assemblaggio, collegamento e caricamento
Conversioni e calcolo prestazioni CPU

ORGANIZZAZIONE DEI SISTEMI DI CALCOLO - 2 ore
Processori
Memoria principale
Memoria secondaria
Input/Output
GPU

LIVELLO LOGICO DIGITALE - 8 ore
Porte logiche e algebra di Boole
Circuiti logici digitali elementari
Memorie
Chip della CPU e bus

LIVELLI DI MICROARCHITETTURA E ISA - 14 ore
Microistruzioni
Unità di controllo microprogrammata: simulatore Mic-1 Esempio di ISA: IJVM
Progettazione del livello di microarchitettura Miglioramento delle prestazioni

GPU E FUNZIONAMENTO INTERNO - 4 ore
Architettura CUDA
Programmazione parallela e Thread

LIVELLO DEL LINGUAGGIO ASSEMBLATIVO - 14 ore
Introduzione al linguaggio assemblativo 8088
Macroistruzioni
Processo di assemblaggio
Collegamento e caricamento
Assemblatore e tracer 8088

Metodi Didattici

Proiezione di slides, video e pagine Internet durante le lezioni sia per le lezioni teoriche che per le esercitazioni. Uso del tool https://logic.ly/demo/ e dei simulatori IJVM e del 8088 per mostrare ai ragazzi come applicare in pratica la parte teorica.
Uso di Social Networks per comunicazioni e creazione di forum interni per la risoluzione di problemi, domande ed esercizi, aggiornamenti e approfondimenti. Utilizzo di un gruppo Telegram per accedere rapidamente ad avvisi, comunicazioni, e materiale didattico. Correzione dei compiti di esami con interazione da parte degli studenti.
Uso del tool Mentimeter per mantenere alta l'attenzione degli studenti ed esercitarsi sui concetti fondamentali visti a lezione.
Il corso prevede una prova in itinere per coloro che frequentano per provare a togliersi la prima parte (programma IJVM e domande sulla prima parte del programma) in modo da allegerire un po' il carico didattico.

Lezioni frontali: 28 ore
Esercitazioni: 16 ore
Seminari: 4 ore

La didattica sarà erogata in presenza. Le lezioni potranno essere integrate con materiali audiovisivi e con lo streaming

Verifica dell'apprendimento

- Esercitazioni ed esempi durante il corso
- Utilizzo di Mentimeter per mantenere costante ed elevato l'interazione con gli studenti.

L’esame consta di due parti:
- un programma IJVM e domande a risposta multipla sulla prima parte del corso
- un programma 8088 e domande a risposta multipla sulla seconda parte del corso

Ci saranno due prove in itinere, una a metà corso e una alla fine che includono le due parti del programma.

Per sostenere l'esame su IJVM e 8088 ogni studente dovra' innanzitutto prenotarsi su esse3 per l'appello relativo e su moodle sul modulo di gestione prenotazione che verra' creato per ogni appello. La prenotazione scadra' qualche giorno prima dell'esame. Una volta prenotato lo studente potra' accedere al modulo su Moodle relativo alla prova scritta dell'IJVM dove all'inizio dell'esame il docente mandera' il testo degli esercizi da effettuare. Ogni studente scarichera' il proprio esame (come verrà spiegato nelle istruzioni) e consegnera' uploadando un file di testo. La prova durera' circa 30 minuti. Lo studente interessato quindi accederà al modulo su Moodle relativo alla prova scritta dell’8088 che avverrà a 30 minuti dalla fine dell’IJVM e, in modo simile, fara’ l’upload del file NOME_COGNOME_MATRICOLA_8088.txt relativo all’esame sull’8088. La prova sull’8088 potrebbe durare un po’ di piu’ (e.g. 45 minuti). Gli studenti possono decidere di fare solo uno dei due (IJVM o 8088) e fare l’altro all’appello successivo.

Per tutta la durata dell’esame lo studente dovrà essere connesso su Microsoft Team (o altro strumento indicato dal docente) e avere webcam a disposizione. Quando lo studente avrà passato con successo IJVM e 8088 sara’ convocato per l’orale che avverra’ su Microsoft Teams in date e tempi che verranno stabiliti dal docente volta per volta. Durante l’orale, lo studente potra’ rifiutare un eventuale voto, e rifare l’orale al prossimo appello. Gli esiti di IJVM e 8088 saranno mantenuti fino alla fine dell’anno accademico. Chi desiderasse svolgere un progetto può farlo e sarà consegnato quando pronto senza restrizioni di tempo. Il giorno prima dell’esame il docente manderà un avviso sul sito del corso di laurea e sul gruppo Telegram relativo ad ulteriori informazioni e quando l’indomani ogni studente dovrà collegarsi.

E’ possibile migliorare il voto presentando un progetto che dovrà essere concordato con il docente. In tal caso, la materia verrà registrata alla presentazione del progetto. Non c’e’ alcuna scadenza per la sua presentazione anche se dovesse finire l’anno accademico. Esempio: se i programmi IJVM e 8088 sono stati superati cosi come le due parti a risposta multipla, e’ possibile consegnare il progetto anche al successivo anno accademico (i voti verranno mantenuti).

Ad uno stesso progetto possono lavorare al max 3 persone. Chiaramente più persone ci sono per progetto, meno punti per ciascuno verranno assegnati.

Eventuali progetti possono essere estesi per tesi di laurea.

Un progetto può fare aumentare il voto base di un qualsiasi valore che dipende dal progetto e che verrà concordato al momento della sua approvazione con il docente.

In generale chi prende una votazione tra i 18 e i 22 significa che sa come programmare a livello di IJVM e 8088 ma non ha un ampio bagaglio culturale del come quei linguaggi funzionano.
Un punteggio dal 23 ai 27 indica studenti che hanno compreso in modo generale dove IJVM e l'8088 si collocano.
Un punteggio dal 28 al 30 e lode indica studenti che hanno compreso in modo dettagliato dove IJVM e l'8088 si collocano.

Testi

A. S. Tanenbaum, T. Austin, Architettura dei calcolatori: Un approccio strutturale, Sesta edizione, Pearson Addison Wesley, 2013

D. A. Patterson, J. L. Hennessy, Struttura e progetto dei calcolatori, Terza edizione, Zanichelli, 2010

https://docs.nvidia.com/cuda/index.html

Sul sito del docente (https://unica.it/unica/it/ateneo_s07_ss01.page?contentId=SHD30988) sono disponibili le slides mostrate durante il corso (sia delle lezioni teoriche che delle esercitazioni) che contengono puntatori a pagine web dove sono state mostrate alcune note integrative.

Inoltre sono anche presenti i compiti passati di IJVM e 8088 con le relative soluzioni che gli studenti possono scaricarsi in locale e testarli sui propri simulatori e assemblatori.

Altre Informazioni

Possibilità di tesi su Arduino, ZORABOT, GPU TITANX ed esperienze all'estero in aziende e istituzioni di ricerca per gli studenti interessati e più meritevoli.
Per quello che riguarda IJVM e 8088 lo studente può esercitarsi scaricando e giocando con i programmi MIC-1 MMV SIMULATION ENVIRONMENT e 8088 ASSEMBLER AND TRACER TOOLKIT disponibili alla pagina web del docente. https://unica.it/unica/it/ateneo_s07_ss01.page?contentId=SHD30988 e guardando gli esercizi di esami passati assegnati agli appelli precedenti il cui testo e soluzione sono disponibili per il download e analisi.
Ulteriori FAQ di ARE sono consultabili sul sito del docente

Questionario e social

Condividi su:
Impostazioni cookie