Politecnico di Torino | |||||||||
Anno Accademico 2010/11 | |||||||||
01MNNNX Algoritmi e calcolatori |
|||||||||
Corso di Laurea in Ingegneria Elettronica - Torino |
|||||||||
|
|||||||||
|
|||||||||
Presentazione
Il corso persegue due obiettivi diversi: da un lato, fornire i concetti base della programmazione a oggetti, con particolare riferimento al linguaggio C++ e, dall’altro, insegnare le metodologie di progettazione manuale di sistemi digitali e introdurre vari aspetti architetturali dei Sistemi di Elaborazione e i relativi principi base di funzionamento.
Il corso fornisce una visione integrata dei vari argomenti, evidenziandone le interazioni, specialmente all’interno dei sistemi embedded. |
Risultati di apprendimento attesi
• Conoscenza di tecniche e metodologie di programmazione a oggetti;
• Capacità di programmazione avanzata in C++; • Conoscenza delle principali architetture dei Sistemi di Elaborazione e del relativo funzionamento; • Conoscenza dei componenti elementari costituenti un Sistema di elaborazione; • Conoscenza delle principali metodologie per la progettazione manuale di sistemi digitali combinatori e sequenziali, a livello di astrazione sia logico sia di trasferimento tra registri (RT). |
Prerequisiti / Conoscenze pregresse
Gli studenti dovrebbero avere familiarità con i concetti fondamentali di:
• Algebra Booleana, come trattata, ad esempio, in: − F.M. Brown: "Boolean reasoning: the logic of boolean equations," Kluwer Academic Publisher, Boston MA (USA), 1990, (capitolo 1, pp. 1-21) • Sistemi di numerazione e codici, come presentati, ad esempio, in: − E.J.McCluskey: "Logic design principles with emphasis on testable semicustom circuits equations," Prentice-Hall, Englewood Cliffs, NJ, USA, 1986, (capitolo 1, pp. 1-28) − J. P. Hayes: "Introduction to Digital Logic Design," Addison Wesley, Reading, MA (USA), 1994, (capitolo 2, pp. 51-123) − M. Mezzalama, N. Montefusco, P. Prinetto: "Aritmetica degli elaboratori e codifica dell'informazione", UTET, Torino (Italy), 1989 (in Italian), (capitolo 1, pp. 1-38). • Programmazione di base in linguaggio C: − Strutture di controllo − Tipi di dato e operatori di base − Ciclo di vita di un programma come presentati, ad esempio, in: − B.W. Kernighan, D.M. Ritchie: The C Programming Language Prentice Hall (pp. 1-57) − P.Deitel, H.Deitel: C : How to Program, Prentice Hall, 2009 |
Programma
• Introduzione e consolidamento dei prerequisiti (0.5 CFU):
− Presentazione del corso − Algebre booleane − Trend tecnologici − Modellizzazione di sistemi digitali − Classificazioni di sistemi digitali • Programmazione a oggetti in C++ (5 CFU): − Introduzione alla programmazione a oggetti − Introduzione al C++ − Le Classi in C++ − Strutture di Controllo − Funzioni, Stream e manipolatori − Puntatori e memoria dinamica − Tipi di dato astratti − Liste − Ricorsione − Algoritmi di ordinamento − Alberi e Grafi • Sintesi manuale di sistemi digitali (2.5 CFU): − Ciclo di progetto − I concetti di Validation & Verification − Diverse metodologie di progetto − Blocchi elementari a livello logico e a livello RT − Sintesi manuale di circuiti combinatori e sequenziali a livello logico e a livello RT • Architetture dei Sistemi di Elaborazione (2.0 CFU): − Componenti base di un sistema − Diverse soluzioni architetturali − Architettura interna di un processore − Introduzione ai linguaggi Assembler − Principi di funzionamento − Sistemi di interconnessione e relativi protocolli − Sistemi di memoria − Gestione delle interruzioni e delle eccezioni − Sistemi di Input/Output − Sistemi Operativi. |
Organizzazione dell'insegnamento
Il corso è organizzato in due semi-corsi paralleli:
• Programmazione • Progettazione & Architetture relativi, rispettivamente, alla Programmazione a oggetti in C++ e agli aspetti Architetturali e di progettazione. Ciascun semi-corso ha un peso di 5 CFU e un proprio esame indipendente. Per quanto riguarda il semi-corso Programmazione, per ogni settimana del corso a partire dalla seconda, è previsto lo svolgimento di un’esercitazione di laboratorio della durata di circa 1.5 ore. Non sarà richiesta la stesura di report dell’attività svolta nei laboratori, ma la loro frequenza è fondamentale in quanto permette agli studenti di verificare la comprensione dei concetti introdotti a lezione e di metterli in pratica. Gli studenti sono vivamente invitati a installare sul proprio PC un tool per lo sviluppo di programmi in linguaggio C/C++. Tra i numerosi tool di sviluppo gratuiti, consigliamo: • Code::Blocks, Release 10.05 - The open source, cross platform, free C++ IDE, reperibile sul sito: http://www.codeblocks.org/ Per quanto riguarda il semi-corso Progettazione & Architetture, durante le lezioni in aula vengono proposti e risolti numerosi esercizi relativi alla progettazione manuale di sistemi digitali. |
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
Tutto il materiale didattico è reso disponibile in anticipo sul portale della didattica, alla pagina ufficiale del corso.
Tutte le lezioni saranno registrate e messe a disposizione attraverso il servizio Poli@Home. Per quanto riguarda il semi-corso Progettazione & Architetture, materiale addizionale può essere reperito all’indirizzo web: www.testgroup.polito.it > Teaching > Teaching Tracks dal quale è possibile scaricare: • Registrazione audio delle lezioni in lingua inglese • Testi di esercizi e relative soluzioni. Per quanto riguarda la parte relativa agli aspetti architetturali, si farà esplicito riferimento al testo: G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto: "Architettura dei calcolatori", Città Studi, 2015 Notizie relative al corso e i programmi dettagliati delle lezioni su base settimanale vengono pubblicati, oltre che sul portale della didattica, anche sulla pagina Facebook Algoritmi e Calcolatori 2017. |
Criteri, regole e procedure per l'esame
L’esame è composto di 2 parti, una per ciascun semi-corso.
Gli esami dei due semi-corsi possono essere sostenuti in momenti indipendenti: il voto finale, corrispondente alla media dei voti conseguiti nei due semi-corsi, viene registrato quando si sono superati con successo entrambi i semi-corsi. Per il semi-corso Programmazione, l’esame consiste nella realizzazione di un programma in linguaggio C++ in grado di risolvere un problema assegnato durante il corso. Lo studente deve consegnare, nei tempi a lui più consoni, sia il codice sorgente sia l’eseguibile del suddetto programma, unitamente a una relazione in formato pdf di massimo 2 pagine. Il progetto deve essere consegnato in formato elettronico tramite la funzione "consegna elaborati" del portale della didattica. Il testo del problema e le relative modalità di svolgimento e di consegna vengono illustrate durante il corso. Per il semi-corso Progettazione & Architetture, l’esame consiste in una prova scritta finale, della durata tipica di due ore, contenente: • Due o più esercizi relativi al progetto di circuiti digitali • Due o più domande sugli aspetti teorici trattati. Al riguardo si evidenzia come tutti gli esercizi disponibili sul sito siano testi di esami degli anni precedenti e che tutte le domande delle sezioni "Test di autovalutazione" del testo di cui sopra siano possibili domande di esame. |
Statistiche superamento esami |
|