- Docente: Alessandro Bevilacqua
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Forli
- Corso: Laurea in Ingegneria meccanica (cod. 0949)
Conoscenze e abilità da conseguire
Al termine del corso lo studente acquisisce nozioni sui principali circuiti logici, sulle macchine digitali e sull'architettura dei calcolatori. Inoltre, lo studente acquisisce i principali elementi utili alla progettazione di algoritmi e gli strumenti necessari alla loro implementazione, attraverso la realizzazione di programmi scritti con un linguaggio di alto livello.
Contenuti
Introduzione alle macchine digitali
Struttura e comportamento. Analisi e Sintesi. Segnali analogici e digitali. Reti di interruttori. Macchine combinatorie e sequenziali. Il concetto di elaboratore elettronico e computazione algoritmica.
Trattamento dell'informazione
Sistemi di numerazione posizionali. Numeri binari. Basi di conteggio decimale, binaria, ottale, esadecimale. Operazioni tra numeri binari. Conversione tra basi. Conversione tra base decimale a base qualunque e viceversa. Codici. Codifica dei numeri e codici binari. Codici con rilevazione di errori. Comunicazione dell'informazione: trasmissione, controllo, sincronizzazione. Protezione dell'informazione. Codici con correzione di errori. Il bit di parità. Il codice di Hamming.
Reti logiche combinatorie e sequenziali
Funzioni, espressioni e schemi logici. Variabili, Bit e configurazioni binarie. Funzioni booleane. Tabelle della verità. Funzioni di una o due variabili. Porte e operazioni logiche. Espressioni e funzioni. Espressioni e schemi logici. Algebra di Boole. Espressioni di funzioni incomplete. Espressioni canoniche. Applicazioni della logica combinatoria: selettore, encoder, decoder, half adder, full adder. Reti di costo minimo. Espressioni minime. Il metodo delle mappe di Karnaugh. Analisi e sintesi. Memorie binarie. Latch SR e CD. Flip flop D. Registri e contatori.
Calcolatori elettronici
Il modello di Von Neumann. I principi di funzionamento di un calcolatore. Rappresentazione astratta dell'hardware di un calcolatore. Sistemi a microprocessore. Il bus. Accesso a dati e istruzioni da parte della CPU.
La programmazione
Algoritmi e strutture dati. Lo pseudo-codice. Diagramma di flusso. Tecniche di progettazione algoritmica. Programmazione strutturata. I concetti di assegnamento, variabile e statement. Strutture dati. I costrutti nella programmazione strutturata. Programmazione procedurale. Cenni di complessità computazionale.
Il linguaggio C
Costrutti fondamentali. Strutture dati in C. Tipi di dato. Variabili globali e locali. Scopo di una variabile. Array e puntatori. Funzioni e prototipi. Input e Output. Espressioni logiche. Direttive di precompilazione e macro. Suddivisione dei programmi in moduli. Compilazione di programmi C.
Testi/Bibliografia
Dispense fornite dal docente.
Per la Programmazione:
TESTO
B.W. Kernighan, D.M. Ritchie
Il Linguaggio C
Pearson - Prentice Hall
TUTORIAL ON LINE
Brian Kernighan
Programming in C, a tutorial
http://www.lysator.liu.se/c/bwk-tutor.html
Metodi didattici
Lezioni frontali in cui ogni argomento verrà immediatamente accompagnato dallo studio di casi che ne mettano in luce applicazioni significative. Per far acquisire agli studenti padronanza e familiarità con gli argomenti trattati verranno inoltre proposte esercitazioni da svolgere a casa, con successiva correzione in aula.
Modalità di verifica e valutazione dell'apprendimento
Gli studenti saranno valutati in base allo svolgimento di una prova scritta e di un esame orale.
Strumenti a supporto della didattica
Nel sito del materiale didattico (link in alto a destra, in questa pagina) sono disponibili per il download le slide presentate a lezione.
Orario di ricevimento
Consulta il sito web di Alessandro Bevilacqua