View syllabus
PROGRAMMING LANGUAGES AND COMPUTER ARCHITECTURE
LANFRANCO LOPRIORE
Academic year2020/21
CourseELECTRONIC ENGINEERING
Code096II
Credits12
PeriodSemester 1 & 2
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
CALCOLATORI IING-INF/05LABORATORI30
LANFRANCO LOPRIORE unimap
FONDAMENTI DI INFORMATICAING-INF/05LEZIONI90
LANFRANCO LOPRIORE unimap
FRANCO MARIA NARDINI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

L'insegnamento si propone di analizzare alcuni aspetti dei linguaggi di programmazione ad alto
livello, con riferimento al linguaggio C++ per l'ampia diffusione di tale linguaggio nello specifico settore produttivo e industriale. La materia viene illustrata mediante largo ricorso ad esempi. Vengono inoltre presentati alcuni aspetti fondamentali dell’architettura di un calcolatore e dei sistemi operativi. 

Ci si aspetta che lo studente che completa l'insegnamento con successo abbia acquisito: (i) competenza nella programmazione dei sistemi di elaborazione, mediante uso di un ampio sottoinsieme del linguaggio di programmazione C++; e (ii) conoscenza dei principi dei sistemi operativi e dei relativi problemi di progetto.

Knowledge

The student who successfully completes the course is expected to acquire: (i) proficiency in computer programming, using a large subset of the C++ programming language; (ii) some knowledge of a few basic concepts of computer architecture; and (iii) knowledge of operating system principles and design issues.

Modalità di verifica delle conoscenze

Nella prova d'esame, lo studente deve essere in grado di dimostrare competenza nella programmazione dei sistemi di elaborazione, con riferimento ad un ampio sottoinsieme del linguaggio ad alto livello C++. Sarà inoltre valutata la capacità dello studente di illustrare gli argomenti presentati durante l'insegnamento, con chiarezza ed utilizzando teminologie appropriate.

Assessment criteria of knowledge

In the written exam, the student must demonstrate proficiency in computer programming, with reference to a large subset of the C++ programming language. During the oral exam, the student will be assessed on his or her ability to explain the topics presented during the course using the appropriate terminology.

Methods:

  • Final oral exam
  • Final written exam

Further information:
The final test is composed by a written exam followed by an oral exam. In general, each part contributes 50% to the definition of the final grade.

Capacità

Ci si aspetta che lo studente che completa il corso di insegnamento con successo abbia acquisito capacità di utilizzare con efficienza e profitto il linguaggio di programmazione ad alto livello C++. Ci si aspetta inoltre che lo studente abbia compreso i principi fondamentali di progetto e funzionamento dei sistemi operativi.

Modalità di verifica delle capacità

Durante le esercitazioni in aula saranno assegnati numerosi esercizi di programmazione di complessità crescente, che lo studente dovrà essere in grado si svolgere sotto la guida del docente e dell'eventuale codocente. 

Comportamenti

Si porrà l'accento sulla necessità di accuratezza e precisione nello svolgimento di attività di programmazione di sistemi di elaborazione, con particolare riferimento alla programmazione ad alto livello ed al linguaggio C++. 

Si sensibilizzeranno gli studenti sulle problematiche connesse con la progettazione di sistemi operativi, anche in riferimento all'evoluzione delle relative metodologie di progetto.

Modalità di verifica dei comportamenti

Durante le esercitazioni in aula sarà valutato il grado di accuratezza e precisione delle attività svolte.

Prerequisiti (conoscenze iniziali)

Nessuno.

Indicazioni metodologiche
  • lezioni frontali, con largo ausilio di diapositive.
  • esercitazioni in aula, anche mediante utilizzo di computer portatili personali degli studenti.
  • le esercitazioni vengono svolte con l'ausilio di un codocente di supporto agli studenti.
  • le interazioni col docente si svolgono nell'orario di ricevimento, e mediante uso della posta elettronica.
Teaching methods

Delivery: face to face

Learning activities:

  • attending lectures
  • individual study
  • Laboratory work

Attendance: Not mandatory

Teaching methods:

  • Lectures
  • laboratory
Programma (contenuti dell'insegnamento)

RAPPRESENTAZIONE DELL’INFORMAZIONE. Numerazione posizionale. Numeri in basi diverse. Conversione di base. Aritmetica binaria. Rappresentazione in complemento dei numeri binari. Numeri in virgola fissa e in virgola mobile. Informazioni di carattere alfanumerico. Codifiche ASCII e BCD.

PROGRAMMAZIONE IN UN LINGUAGGIO AD ALTO LIVELLO: IL C++. Sviluppo di un programma. Il linguaggio C++. Tipi fondamentali, operatori ed espressioni. Istruzioni di controllo. Array. Puntatori e riferimenti. Funzioni. Visibilità, collegamento e tempo di vita. Effetti collaterali. Aliasing. Strutture e unioni. Classi. Sovrapposizione degli operatori. Ingresso e uscita. Strutture dati. Ordinamento e ricerca. Un ambiente di sviluppo integrato per programmi in linguaggio C++: l’ambiente Code::Blocks.

FONDAMENTI DI ARCHITETTURA DEI CALCOLATORI. Il processore. La memoria. Il set istruzioni. Codifica delle istruzioni. Il controllo del flusso. Lo stack. Sottoprogrammi. Meccanismi di interruzione. Memorie cache. Dispositivi di ingresso/uscita. Accesso diretto alla memoria. Meccanismi di protezione. Unità di gestione della memoria.

SISTEMI OPERATIVI. Gestione dei processi. Nucleo di un sistema a processi. Sincronizzazione e mutua esclusione. Gestione della memoria. Gestione delle periferiche. Il file system.

Syllabus

High-Level Programming and the C++ Programming Language: data types, operators and expressions; control structures; arrays; pointers and references; functions; structures and unions; classes; input/output. Fundamentals of Computer Architecture: processor; memory; disks; I/O devices. Operating System Concepts: process management; interprocess synchronization; memory management; input/output management; file system.

Bibliografia e materiale didattico

P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari, Sistemi Operativi, Seconda Edizione. Milano: McGraw-Hill, giugno 2008.

P. Corsini, G. Frosini, Note su Organizzazione di un Calcolatore Rappresentazione dell’Informazione, Edizioni ETS, 2017.

A. Domenici, G. Frosini, Introduzione alla Programmazione ed Elementi di Strutture Dati con il Linguaggio C++, ottava edizione, quinta ristampa. Milano: FrancoAngeli, 2013.

L. Lopriore, Programmazione Mediante Esempi Utilizzando il Linguaggio C++, Raccolta di Diapositive. Pisa: Edizioni Il Campano, 2019.

L. Lopriore, C++: Laboratorio di Programmazione. Pisa: Edizioni Il Campano, 2018.

L. Lopriore, F. M. Nardini, N. Tonellotto, C++: Esercizi di Programmazione sulle Classi. Pisa: Edizioni Il Campano, 2019.

Bibliography

P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari, Sistemi Operativi, Seconda Edizione. Milano: McGraw-Hill, giugno 2008.

P. Corsini, G. Frosini, Note su Organizzazione di un Calcolatore Rappresentazione dell’Informazione, Edizioni ETS, 2017.

A. Domenici, G. Frosini, Introduzione alla Programmazione ed Elementi di Strutture Dati con il Linguaggio C++, ottava edizione, quinta ristampa. Milano: FrancoAngeli, 2013.

L. Lopriore, Programmazione Mediante Esempi Utilizzando il Linguaggio C++, Raccolta di Diapositive. Pisa: Edizioni Il Campano, 2019.

L. Lopriore, C++: Laboratorio di Programmazione. Pisa: Edizioni Il Campano, 2018.

L. Lopriore, F. M. Nardini, N. Tonellotto, C++: Esercizi di Programmazione sulle Classi. Pisa: Edizioni Il Campano, 2019.

Indicazioni per non frequentanti

Nessuna variazione per studenti non frequentanti in merito a programma, modalità d'esame e bibliografia.

Modalità d'esame

Metodologia:

  • Prova finale scritta
  • Prova finale orale

Ulteriori informazioni:

L'esame finale è composto da una prova scritta seguita da una prova orale. In generale, ciascuna prova contribuisce per la metà alla definizione della valutazione finale. La prova scritta ha una durata di circa due ore dove viene proposto un esercizio di programmazione in linguaggio C++. L’ammissione alla prova orale è subordinata al conseguimento di una valutazione della prova scritta con un punteggio minimo di 15 trentesimi. 

Altri riferimenti web
  • Pagina web del docente:
    http://unimap.unipi.it/cercapersone/dettaglio.php?ri=250
  • Iscrizione all'esame:
    http://esami.unipi.it
Note

Nessuna.

Updated: 10/09/2020 11:57