CORSO DI LAUREA IN INGEGNERIA CIVILE Denominazione del Corso di Insegnamento: Fondamenti di Informatica Indicare se l’Insegnamento è presente in altri Corsi di Laurea: tutti i Corsi di Laurea della Facoltà di Ingegneria Docente: Struttura di Afferenza: Dipartimento di Ingegneria Elettrica ed Elettronica Durata del corso: 60 ore N. crediti: 6 Pre-requisiti: (in prima istanza possono essere indicati Corsi di Insegnamento; in una fase successiva [quando saranno consultabili le articolazioni dei Corsi indicati come pre-requisiti] la voce dovrà possibilmente contenere argomenti di insegnamento già conosciuti) Nessuno. Obiettivi e contenuto schematico del corso: (max 5 righe-risultati d’apprendimento previsti e competenze da acquisire, indicati con riferimento ai descrittori di Dublino* ) Il corso fornisce le conoscenze fondamentali sia sui principi del funzionamento e sull'organizzazione di calcolatori, sistemi informativi e reti di calcolatori, che sui linguaggi di programmazione, con riferimento al linguaggio C. Tali conoscenze consentiranno di comprendere l'architettura, i componenti e la logica del funzionamento dei moderni sistemi informativi, valutare autonomamente l'adeguatezza di semplici strumenti informatici in ambito professionale, e dialogare efficacemente con specialisti informatici per lo sviluppo di soluzioni più complesse. Forniscono inoltre la capacità di sviluppare programmi in linguaggio C, nonché le basi per affrontare insegnamenti più specifici nell'area dell'ingegneria dell'informazione. Programma ed articolazione del Corso: (Il programma deve essere articolato orientativamente in 7-10 argomenti fornendo per ciascuno il n. di ore di insegnamento dedicato nel corso) Architettura dei calcolatori (4 ore). L’architettura di Von Neumann: unità di elaborazione, memoria centrale, bus di sistema, interfacce di I/O, dispositivi esterni. Il sistema operativo (4 ore). Organizzazione e funzioni di un sistema operativo: gestione dei processi, della memoria centrale, delle periferiche, del file system e dell'interfaccia utente. Codifica binaria dell’informazione (2 ore). Codifica analogica e numerica delle informazioni. Codifica binaria dei numeri interi e dei numeri reali. Cenni sulla codifica di testi, immagini, audio, video. Cenni sulla compressione dei dati. Sistemi informativi (7 ore). Organizzazione e funzionamento dei sistemi informativi. La gestione dei dati. Le basi di dati. Il modello relazionale. Esempi di sistemi informativi. Reti di calcolatori, Internet (7 ore). Mezzi trasmissivi e tecniche di trasmissione dati. Topologia delle reti di calcolatori. Protocolli. Principali protocolli e servizi della rete Internet, organizzazione dei servizi Internet. Algoritmi e linguaggi (6 ore). Il concetto di algoritmo. Linguaggi per la codifica di algoritmi. Definizione di esecutore. Linguaggio C (30 ore). Codifica degli algoritmi in un linguaggio di alto livello; strumenti di supporto alla programmazione in linguaggio C (editor, compilatore, linker). Tipi di dati: costanti, tipi, variabili; tipi semplici e strutturati; tipi predefiniti e definiti dall’utente (array e struct); puntatori. Strutture di controllo: istruzioni di selezione (if-then-else, switch) e istruzioni cicliche (while-do, do-while, for). Funzioni e procedure: dichiarazione, definizione e invocazione; passaggio dei parametri per valore e per indirizzo; procedure e funzioni predefinite. I/O standard e su file (cenni). Esercitazioni: (n. di ore dedicato alle esercitazioni, contenuto e modalità di svolgimento) 15 ore di esercitazione in aula, consistenti nello svolgimento di esercizi sulla codifica dell'informazione e sullo sviluppo di programmi in linguaggio C. Gli esercizi saranno svolti in parte dal docente e in parte dagli studenti. Materiale didattico: (indicare testi, dispense, ecc., con eventuale disponibilità su web) Testo di riferimento: S. Ceri, D. Mandriola, L. Sbattella, “Informatica, arte e mestiere”, McGrawHill Italia. Copia delle presentazioni usate a lezione, esercitazioni e compiti d'esame nel sito web del corso gestito dal docente. Modalità di esame: (modalità di svolgimento prove intermedie e finale) Una prova scritta composta da domande a risposta aperta su tutti gli argomenti del corso, ed esercizi sulla codifica binaria, lo schema logico di basi di dati relazionali, e lo sviluppo di programmi in linguaggio C. Nozioni verificabili che si dovrebbero possedere dopo aver superato l’esame: (indicare le principali conoscenze acquisite e ricadute nel percorso formativo) Gli allievi dovranno conoscere: i concetti di base sull'architettura dei calcolatori e sui principi del loro funzionamento, sui sistemi operativi e sulla loro organizzazione, e sulla codifica dell'informazione; i concetti di base sull'architettura, l'organizzazione e il funzionamento delle reti di calcolatori, e in particolare della rete Internet; i concetti di base sull'organizzazione e il funzionamento dei sistemi informativi e delle basi di dati, con riferimento all'organizzazione logica delle basi di dati relazionali; i concetti di base sui linguaggi di programmazione di alto livello, e i costrutti principali del linguaggio C. Gli allievi dovranno saper fare: comprendere lo schema logico di semplici basi di dati relazionali; comprendere programmi di media complessità scritti in linguaggio C; formulare algoritmi per la risoluzione di problemi di media complessità, e codificarli in linguaggio C. * I descrittori di Dublino tramite i quali definire gli obiettivi formativi sono, in sintesi: conoscenza e capacità di comprensione; capacità di applicare la conoscenza e capacità di comprensione; autonomia di giudizio; abilità comunicative; capacità di apprendere autonomamente.