en
Politecnico di Torino
Anno Accademico 2010/11
01MNNNX
Algoritmi e calcolatori
Corso di Laurea in Ingegneria Elettronica - Torino
Docente Qualifica Settore Lez Es Lab Tut Anni incarico
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
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

Programma definitivo per l'A.A.2016/17
Indietro