Materie di Ingegneria Elettronica




Fondamenti di Programmazione e Architettura dei Calcolatori

La formazione di base di un ingegnere prevede che egli conosca bene gli strumenti che utilizza in modo da sfruttarli al meglio. Quale miglior modo esiste per imparare il funzionamento di un elaboratore se non quello di programmarlo? Il corso di "Fondamenti di Programmazione" prevede infatti l'insegnamento del linguaggio di programmazione C, un linguaggio a basso livello (seppur non bassissimo come l'Assembly) che permette di entrare nella logica di funzionamento dei computers.
La seconda parte, ovvero "Architettura dei Calcolatori", invece si incentra sull'hardware e sullo sfruttamento da parte del sistema operativo dell'hardware, con relative conoscenze di base di alcune funzionalità. Il tutto contornato da una parte di programmazione (sempre C) orientata al trattamento di file multimediali (Waves e Bitmap) e una parte di programmazione Assembly.

Conoscenze pregresse:
Questa è una materia di base, non necessita di particolari conoscenze se non la matematica e la logica di base.

Indice degli argomenti:
Fondamenti di Programmazione Architettura dei Calcolatori
-La codifica delle informazioni
-Bit, byte, word
-Principali dei numeri interi
-Informazioni testuali
-Immagini fisse e in movimento
-Suoni
-Cenni sull'architettura dei calcolatori
-Introduzione ai sistemi operativi
-Programmazione
-Il concetto di algoritmo
-Elementi di programmazione strutturata
-Diagrammi di flusso
-Vettori e stringhe, matrici e tabelle
-Cenni sulle strutture dati dinamiche
-Esempio di algoritmi classici
-Cenni sulle tecniche di programmazione avanzata
-Cenni di ingegneria del software
-Linguaggio C
-Compilatori, linker, interpreti
-Identificatori, tipi di dato, costanti e assegnazioni
-Strutture di controllo
-Funzioni elementari di I/O
-Le funzioni
-Dati strutturati e tipi definibili dall'utente
-Lettura e scrittura da file
-Libreria standard
-Aspetti avanzati della codifica della informazioni
-Tecniche di rilevazione e correzione degli errori
-Tecniche di compressione
-L'architettura dei calcolatori
-Richiami di reti logiche (circuiti combinatori, sequenziali, reti logiche elementari, flip-flop)
-Esempio di semplice architettura RISC
-Linguaggio macchina
-Linguaggio assembler
-Architetture RISC e CISC
-Memoria cache, interrupt e DMA
-Cenni sul calcolo parallelo e sui sistemi multiprocessore
-Sistemi operativi
-Gestione dei processi e processori
-Gestione della memoria centrale
-Gestione della memoria di massa e file system
-Gestione dell'I/O fisico
-Utilizzo dei fogli elettronici per applicazioni tecnico-scientifiche

Materiale per lo studio della materia

Il prof. Montessoro Pier Luca mette a disposizione sul suo sito tutto il materiale dei due corsi (che vengono trattati separatamente seppur formino un unico esame) sempre aggiornato. Da li, seguendo il link "Materiale didattico" travate tutte le sue slide e i programmi C svolti in classe.

Per quanto riguarda la programmazione C vi posso consigliare questa guida presente sul sito html.it fino alla lezione 32 (oltre non è necessario per il corso).
La programmazione richiede tempo da dedicarci per fare esercizi e nessun libro al mondo è in grado di farvela capire bene. Se trovate delle difficoltà vi consiglio di chiedere ripetizioni a qualcuno (io ovviamente sono più che disponibile a dare ripetizioni, basta che mi contattiate).

Per quanto riguarda la parte di Architettura dei Calcolatori, le slide sono abbastanza esaustive (se affiancate a risorse on-line quali, per esempio, Wikipedia), altrimenti qui c'è il libro di testo consigliato dal prof:

book.zip [81,3 MB]

Esercizi svolti

C'è una sezione sul sito del prof. Montessoro contenente tutti gli esercizi che svolge in classe nei vari anni, oltre a ciò vi è una sezione contenente temi d'esame svolti (compresi i programmi C).
In più sul mio sito è presente un articolo contenente degli esercizi (base) di programmazione con soluzioni.
Qui l'articolo