Servizi per la didattica
PORTALE DELLA DIDATTICA

Algoritmi e calcolatori

01MNNNX

A.A. 2019/20

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea in Ingegneria Elettronica - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 82
Esercitazioni in laboratorio 18
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Prinetto Paolo Ernesto Professore Ordinario ING-INF/05 40 0 0 0 9
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05
ING-INF/05
2
8
F - Altre (art. 10, comma 1, lettera f)
B - Caratterizzanti
Abilità informatiche e telematiche
Ingegneria informatica
2018/19
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, 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.
The course targets two goals: from the one hand, it aims at providing the basics of Object-Oriented Programming, with emphasis on C++ and, from the other hand, at introducing the basics of Computer Architectures. The course provides an integrated approach to the above-mentioned topics, enhancing their mutual interactions, especially when dealing with embedded systems.
• 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; • Introduzione dei concetti introduttivi relativi alla programmazione a livello Assembler, ai Sistemi Operativi e alla Security.
• Knowledge of Object-Oriented Programming methodologies; • Capability of advanced programming on C++ language; • Knowledge of the most significant computer architectures and their internal structures and organizations; • Knowledge of elementary building blocks of Processing elements; • Knowledge of basic concepts of Assembly level programming, Operating Systems, and cybersecurity.
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
Students are assumed to be familiar with the fundamental concepts of: • Algebras, as presented, for instance, in: − F.M. Brown: "Boolean reasoning: the logic of boolean equations," Kluwer Academic Publisher, Boston MA (USA), 1990, (chapter 1, pp. 1-21) • Number systems and codes, as presented, for instance, in: − E.J.McCluskey: "Logic design principles with emphasis on testable semicustom circuits equations," Prentice-Hall, Englewood Cliffs, NJ, USA, 1986, (chapter 1, pp. 1-28) − J. P. Hayes: "Introduction to Digital Logic Design," Addison Wesley, Reading, MA (USA), 1994, (chapter 2, pp. 51-123) − M. Mezzalama, N. Montefusco, P. Prinetto: "Aritmetica degli elaboratori e codifica dell'informazione", UTET, Torino (Italy), 1989 (in Italian), (chapter 1, pp. 1-38). • Basic concepts of C programming language: − Control structures − Basic data types and operators − The program life-cycle as presented, for instance, 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
• 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++ (7 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 • Architetture dei Sistemi di Elaborazione (1.5 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. • Argomenti trasversali (1 CFU): − Introduzione ai linguaggi Assembler − Introduzione ai Sistemi Operativi − Introduzione alla cybersecurity − Introduzione all’hardware security and trust.
• Introduction and basic concepts (0.5 ECTS credits) o Course presentation o Technology trends o Boolean Algebras o Digital System modeling o Digital System clustering and taxonomy • Object Oriented Programming in C++ (5 ECTS credits): o Introduction to Object Oriented Programming o Introduction to C++ o Classes in C++ o Control Structures o Functions and Streams o Pointers and dynamic memory o Abstract Data Types o Lists o Recursion o Sorting algorithms o Trees and Graphs • Computer architectures (1.5 ECTS credits): o Digital systems basic components o Processor architectures o Introduction to Assembler languages o Interconnection systems and protocols o Memory systems o Exceptions and interrupts handling systems o Introduction to Operating Systems. • Basic concepts (1 ECTS credit): − Introduction to Assembly level programming − Introduction to Operating Systems − Introduction to cybersecurity − Introduction to ’hardware security and trust.
Il corso è organizzato in due moduli paralleli: • Programmazione (7 CFU) • Architetture (3 CFU) relativi, rispettivamente, alla Programmazione a oggetti in C++ e agli aspetti Architetturali. Ciascun moduli ha un proprio esame indipendente. Per quanto riguarda il modulo 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/
The course is structured in two concurrent modules: • Programming (7 ECTS credits) • Architecture (3 ECTS credits) Each module has its own exam. As far as the Programming sub-course is concerned, laboratory sessions of 1.5 hours are held every week. No report about the laboratory activities is required, but attending Labs allows students to check their level of understanding and helps them to practically apply the learned concepts. Students are warmly encouraged to download and install a program development tool for C++ on their PCs. Among the free tool, we warmly suggest: • Code::Blocks, Release 10.05 - The open source, cross platform, free C++ IDE (http://www.codeblocks.org/)
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 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 2019.
All the teaching material is made available, in advance, via the Course official homepage on the University Teaching portal. All the lectures will be recorded and made available via the Poli@Home Service. Concerning the computer architecture part, the following textbook is used: G. Conte, A. Mazzeo, N. Mazzocca, P. Prinetto: “Architettura dei calcolatori”, Città Studi, 2015 (in Italian) News related to the course and the detailed weekly schedule are posted both on the official Course homepage, on the University Teaching portal, and on a Facebook Group: Algoritmi e Calcolatori 2019.
Modalità di esame: prova scritta; progetto di gruppo;
L’esame è composto di 2 parti, una per ciascun modulo. Gli esami dei due moduli possono essere sostenuti in momenti indipendenti: il voto finale, corrispondente alla media pesata dei voti conseguiti nei due modulii, 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 90 minuti, contenente domande sugli aspetti trattati.
Exam: written test; group project;
Exam includes two independent parts, one for each module, the final score being the weighted average of the scores got in each part. For the Programming module, the exam consists in submitting a C++ program capable of solving a problem proposed during the course. Students are asked to deliver, at their best convenience, the source and the executable code, and a brief report. For the Architecture module, the exam consists in a written final test (90 minutes) in which students are requested to answer questions related to the architectural aspects.


© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
m@il