en
Politecnico di Torino
Anno Accademico 2014/15
01MNNNX
Algoritmi e calcolatori
Corso di Laurea in Ingegneria Elettronica - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
Prinetto Paolo Ernesto ORARIO RICEVIMENTO     60 21 19.5 0 10
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05
ING-INF/05
2
8
F - Altre attività (art. 10)
B - Caratterizzanti
Abilità informatiche e telematiche
Ingegneria informatica
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++
• Conoscenza dei componenti elementari costituenti un sistema digitale
• Conoscenza di metodologie per la progettazione manuale di sistemi digitali semplici
• Capacità di analisi e progetto di semplici sistemi digitali combinatori e sequenziali
• Conoscenza delle principali architetture di Sistemi di Elaborazione e il relativo funzionamento
• Conoscenze di base del linguaggio Assembler
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 prerequisiti (0.5 CFU)
o Presentazione del corso
o Rappresentazione e processamento dei dati
o Algebre booleane
o Modellizzazione di sistemi digitali

• Programmazione avanzata (4 CFU)
o Puntatori
o Tipi di dato astratto
o Ricorsione
o Algoritmi di ordinamento
o Alberi e Grafi
o Dizionari
o Introduzione ai linguaggi di programmazione a oggetti

• Sintesi manuale di sistemi digitali (2.5 CFU)
o Ciclo di progetto di sistemi digitali
o Sintesi manuale di circuiti combinatori e sequenziali

• Architetture dei Sistemi di Elaborazione (2.5 CFU)
o Componenti elementari di un sistema digitale
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

• Linguaggio Assembler (0.5 CFU)
o Introduzione ai linguaggi Assembler
Organizzazione dell'insegnamento
Per ogni settimana del corso è 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 permetterà agli studenti di verificare la comprensione dei concetti introdotti a lezione e metterli in atto. I laboratori tratteranno i seguenti temi:

• Programmazione avanzata in C
o Puntatori
o Tipi di dato astratto
o Ricorsione
o Algoritmi di ordinamento
o Alberi e Grafi
o Dizionari

• Programmazione in C++
Durante le lezioni in aula saranno inoltre condotte delle esercitazioni riguardanti la progettazione manuale di sistemi digitali.

Gli studenti sono vivamente invitati ad 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/
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
Tutto il materiale didattico può essere reperito all’indirizzo web:
www.testgroup.polito.it
> Teaching > Teaching Tracks
Per ogni lezione, il materiale disponibile è tipicamente composto da:
• Slides:
− Files .pdf, contenenti 1 slide per pagina, a colori – tipicamente utilizzati per la visualizzazione video
− Files .pdf, contenenti 6 slides per pagina, in bianco e nero – tipicamente utilizzati per la stampa
• Registrazione audio della lezione (in inglese):
− Files multimediali flash – tipicamente utilizzati per la visualizzazione video
− Files Podcast per iPod – tipicamente utilizzati per podcasting su iPod o lettori multimediali simili.
• Registrazione video della lezione (in italiano):
− Tutte le lezioni saranno registrate e messe a disposizione attraverso il servizio Poli@Home.

Ogni lezione include alcune slides, con sfondo verde, che riassumono gli obiettivi della lezione, i prerequisiti, gli eventuali homeworks, e gli eventuali riferimenti bibliografici aggiuntivi. I riferimenti aggiuntivi sono da tenere in considerazione se lo studente è interessato ad una conoscenza più profonda di alcuni argomenti trattati durante la lezione. Il loro contenuto è comunque fuori dagli argomenti previsti nel corso.
Criteri, regole e procedure per l'esame
L’esame sarà composto di 2 parti:
• prova scritta finale
• realizzazione di un progetto

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 sul progetto di circuiti digitali semplici
• uno o più domande sugli aspetti teorici trattati dal corso.

La prova scritta avrà durata complessiva di 2 o 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 UN PROGETTO
Il progetto consisterà in un programma in linguaggio C in grado di risolvere un problema.
Lo studente dovrà consegnare il codice sorgente e l’eseguibile, del suddetto programma. Inoltre dovrà essere consegnata una relazione in formato pdf di massimo 2 pagine.
Il progetto dovrà essere consegnato in formato elettronico tramite la funzione consegna elaborati del portale della didattica. I file, organizzati in cartelle, dovranno essere inseriti all’interno di un unico archivio nominato secondo il seguente formato:

Cognome_Nome_Matricola.rar

Il voto del progetto avrà un peso pari a 1/3 sul voto finale, ovvero 10/30.
Il progetto potrà essere consegnato entro una delle seguenti date, subendo le seguenti penalizzazioni.
• 22/06/2014 : il progetto non verrà penalizzato (votazione massima di 10/30).
• 11/07/2014 : il progetto verrà penalizzato del 30% (votazione massima di 7/30).
• 19/09/2014 : il progetto verrà penalizzato del 70% (votazione massima di 3/30).
• Oltre : il progetto non verrà valutato (votazione pari a 0/30).
Alla consegna seguirà, nei giorni successivi, una breve discussione orale in cui verrà accertato il funzionamento del programma e verrà analizzato il codice consegnato.

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. Il voto relativo al progetto concorrerà quindi al raggiungimento del voto finale anche per tutti gli appelli degli esami scritti successivi.

VOTO FINALE
Si potrà superare l’esame solo nel caso in cui il voto relativo all’esame scritto risulterà sufficiente (ovvero, maggiore o uguale a 18/30). In tale caso, il voto finale (in trentesimi), sarà ottenuto mediante la seguente relazione:
Voto Finale (max 30) = Voto Esame Scritto (max 20) + Voto Progetto (max 10)
Orario delle lezioni
Statistiche superamento esami

Programma definitivo per l'A.A.2014/15
Indietro