Politecnico di Torino | |||||||||||||||||
Anno Accademico 2012/13 | |||||||||||||||||
01MNNNX Algoritmi e calcolatori |
|||||||||||||||||
Corso di Laurea in Ingegneria Elettronica - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
Presentazione
Insegnamento obbligatorio per la laurea triennale in Ingegneria Elettronica, collocato al secondo periodo didattico del secondo anno.
Gli argomenti principali dell’insegnamento sono: gli aspetti architetturali e i principi di funzionamento dei Sistemi di Elaborazione; le tecniche e i linguaggi di programmazione, sia C sia Assembler e le metodologie di progettazione manuale di sistemi digitali. L’insegnamento fornirà una visione comprensiva e integrata dei vari argomenti, evidenziandone le interazioni. |
Risultati di apprendimento attesi
• Conoscenza di tecniche e metodologie di programmazione avanzata, quali puntatori, ricorsione e strutture di dati complesse
• Capacità di programmazione avanzata in linguaggio C • Conoscenza di base dei linguaggi di programmazione a oggetti, con particolare rifermento al linguaggio C++ • Capacità di scrittura di programmi in linguaggio C++ • Conoscenza di programmazione in linguaggio Assembler dei processori Intel x86 • Capacità di scrittura di programmi in linguaggio Assembler x86 • Conoscenza dei componenti elementari costituenti un sistema digitale • Conoscenza di metodologie per la progettazione manuale di sistemi digitali • Capacità di analisi e progetto di semplici sistemi digitali combinatori e sequenziali • Conoscenza delle principali architetture di Sistemi di Elaborazione e il relativo funzionamento • Conoscenza basilare dei Sistemi Operativi |
Prerequisiti / Conoscenze pregresse
• Conoscenze dell’algebra booleana
• Conoscenze di programmazione di base in linguaggio C e in particolare di strutture di controllo, tipi e operatori • Conoscenze di rappresentazione dei dati e in particolare dei sistemi di numerazione e dei codici |
Programma
• Introduzione e consolidamento prerequisiti (4 h)
o Presentazione del corso o Rappresentazione dei dati o Algebre booleane o Modellizzazione di sistemi digitali • Programmazione avanzata (26 h) o Puntatori o Tipi di dato astratto o Ricorsione o Alberi e Grafi o Introduzione ai linguaggi di programmazione a oggetti • Sintesi manuale di sistemi digitali (18 h) o Ciclo di progetto di sistemi digitali o Sintesi manuale di circuiti combinatori e sequenziali • Architetture dei Sistemi di Elaborazione (27 h) o Componenti elementari o Tipi di architetture di un processore o Sistemi di interconnessione e relativi protocolli o Sistemi di memoria o Gestione delle interruzioni e delle eccezioni o Sistemi di Input/Output o Sistemi Operativi • Linguaggio Assembler (6 h) o Introduzione ai linguaggi Assembler o Programmazione in linguaggio Assembler Intel x86 |
Organizzazione dell'insegnamento
Per ogni settimana del corso è previsto lo svolgimento di un’esercitazione di laboratorio della durata di circa 1.5 ore, durante la quale gli studenti potranno verificare la comprensione dei concetti introdotti a lezione e metterli in atto.
I laboratori, in totale 13, tratteranno i seguenti temi: • Programmazione avanzata in C (7.5 h) • Programmazione in C++ (3 h) • Programmazione in Assembler x86 (7 h) • Integrazione C/Assembler (1.5 h) Durante le lezioni in aula saranno inoltre condotte delle esercitazioni riguardanti la progettazione manuale di sistemi digitali. |
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
• Lucidi delle lezioni (scaricabile dal sito http://www.testgroup.polito.it).
• Libri di riferimento (Non richiesti. Il materiale fornito e le esercitazioni sono sufficienti): o B.W. Kernighan, D.M. Ritchie, "The C Programming Language", Prentice Hall o P.Deitel, H.Deitel, "C : How to Program (6th Edition)", Prentice Hall, 2009 o P.Deitel, H.Deitel, "C++ : How to Program (8th Edition)", Prentice Hall, 2011 • Libri di testo: o G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto, "Architettura dei Sistemi di Elaborazione", Utet, 2013. o M. Grosso, P. Prinetto, M. Rebaudengo, M. Sonza Reorda, "La programmazione in Assembler x86", Ebook, 2012 |
Criteri, regole e procedure per l'esame
L’esame sarà composto di 2 parti:
• prova scritta finale • realizzazione di due progetti PROVA SCRITTA La prova scritta verterà sulle tematiche svolte a lezione e sarà costituito dei seguenti punti: • uno o più esercizi di programmazione avanzata in C • uno o più esercizi di programmazione in C++ • uno o più esercizi di programmazione in Assembler x86 • uno o più esercizi sul progetto di circuiti digitali semplici • uno o più domande sugli aspetti teorici trattati dal corso. La prova scritta avrà durata complessiva di 3 ore e durante il suo svolgimento non sarà possibile consultare né libri, né appunti, né utilizzare dispositivi elettronici. Il voto della prova scritta avrà un peso pari a 2/3 sul voto finale, ovvero 20/30. REALIZZAZIONE DI DUE PROGETTI I due progetti consisteranno in un programma in linguaggio C e uno in linguaggio Assembler x86 in grado di risolvere due differenti problemi. Per il programma in C dovrà essere consegnato il codice sorgente e l’eseguibile, mentre per il programma Assembler dovrà essere consegnato solamente il codice sorgente. Inoltre, per ogni progetto, dovrà essere consegnata una relazione in formato pdf di massimo 2 pagine ciascuna. I progetti dovranno essere consegnati in formato elettronico tramite la funzione consegna elaborati del portale della didattica. I file dei due progetti, organizzati in cartelle, dovranno essere inseriti all’interno di un unico archivio nominato secondo il seguente formato: Cognome_Nome_Matricola.rar Il voto dei due progetti avrà un peso pari a 1/3 sul voto finale, ovvero 10/30. I progetti potranno essere consegnati entro una delle seguenti date, subendo le seguenti penalizzazioni. • 21/06/2013 : i progetti non verranno penalizzati (votazione massima di 10/30). • 12/07/2013 : i progetti verranno penalizzati del 30% (votazione massima di 7/30). • 20/09/2013 : i progetti verranno penalizzati del 70% (votazione massima di 3/30). • Oltre : i progetti non verranno valutati (votazione pari a 0/30). Alla consegna seguirà, nei giorni successivi, una breve discussione orale in cui verrà accertato il funzionamento dei progetti e verranno analizzati i codici consegnati. NB: Sarà possibile sostenere la prova scritta finale in accordo con gli appelli pianificati dalle segreterie didattiche, mentre i progetti potranno essere consegnati in un’unica data, senza possibilità di risottometterli. |
Orario delle lezioni |
Statistiche superamento esami |
|