Ing. Italo Epicoco lunedì 07 settembre 2015 Home Area personale Scheda personale Offerta formativa Elenca Insegnamenti Area personale logout FONDAMENTI DI INFORMATICA Docente Ing. Italo Epicoco Vedi scheda Italo Epicoco ha conseguito il dottorato di ricerca presso l'ISUFI dell'Universita' di Lecce nel 2003 in tecnologie e materiali innovativi. Dal 2002 e' ricercatore in Sistemi di Elaborazione delle Informazioni (settore ING-INF05) presso l'Universita' del Salento. Dal 2006 e' ricercatore affiliato presso il Centro Euro-Mediterraneo sui Cambianenti Climatici. L'attivita' di ricerca e' focalizzata sul calcolo ad alte prestazioni. I principali ambiti applicativi riguardano lo sviluppo di algoritmi paralleli per la risoluzione numerica di PDE applicati a modelli climatici utilizzando architetture hardware convenzionali (cluster paralleli) e non convenzionali quali processori GPU, MIC e FPGA. In passato l'attivita' di ricerca ha interessato il calcolo distribuito con lo sviluppo di un grid resource broker per la gestione delle risorse e lo scheduling dei job in ambiente grid computing. Le compentenze acquisite sul calcolo distribuito sono state applicate in ambiti quali la bioinformatica, l'elaborazione di immagini telerilevate e gli ambienti virtuali per la ricostruzione di beni culturali. Corsi di Laurea in cui è svolto CdL in Ingegneria dell'Informazione Settore Scientifico Disciplinare ING-INF/05 Anno Periodo Crediti Formativi (CFU) Teoria Esercitazione Ore di Progetto Ore di Laboratorio I secondo 7 38 - 16 24 Orario di ricevimento Martedi' ore: 9.30 - 13.30 Venerdi' ore: 9.30 - 13.30 Obiettivi del Modulo Risultati di apprendimento Il corso mira a fornire sia elementi di teoria dell’informatica che principi e basi per la programmazione. Al termine del corso gli studenti saranno in grado di: 1) Illustrare le principali caratteristiche dell’architettura di un calcolatore 2) Comprendere le metodologie di rappresentazione e codifica dell’informazione 3) Progettare e implementare un algoritmo 4) Riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche) 5) Riconoscere le principali strutture dati dinamiche (liste, code, alberi, grafi, hash table) e i principali algoritmi di oridnamento e di ricerca. 6) Effettuare l'analisi della complessita' computazionale di un algoritmo 7) Analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE) Requisiti Non si richiedono conoscenze pregresse. Nessuna propedeuticita' Modalità d'esame L'esame sara' composto da una prova scritta durante la quale si verificheranno le capacita' acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessita' computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso quale l'architettura del calcolatore e la rappresentazione delle informazioni. Oltre alla prova scritta ci sara' una prova di progetto da sviluppare durante il corso. Il progetto, che protra' anche essere svolto in team di 2 studenti, mira a verificare le capacita' acquisite nella implementazione, compilazione ed esecuzione di una semplice applicazione a linea di comando. La presentazione e discussione del progetto avverra' solo dopo aver conseguito la sufficienza durante la prova scritta. Sito Internet di riferimento http://sara.unisalento.it/moodle PROGRAMMA Teoria • Elementi di Informatica o Architettura del calcolatore o Rappresentazione e codifica dell'informazione o Il sistema Operativo o Internet o Principi di ingegneria del software o Principi di database o Principi di reti di calcolatori e sistemi distribuiti ore: 12 • Programmazione ore: 14 o Codifica algoritmi ad alto livello o Linguaggio C o Tipi di dato o Strutture di controllo o Funzioni e procedure o Programmazione ricorsiva o Gestione dei file o Classi e programmazione a oggetti: Linguaggio Java (cenni) o Progettazione di database relazionali: linguaggio SQL o Progettazione web: linguaggio HTML, javascript, php (cenni) • Algoritmi e strutture dati ore: 12 o Strutture dati dinamiche: code, liste, alberi, grafi, hash table o Algoritmi di ricerca e ordinamento o Algoritmi su grafi o Analisi della complessità computazionale di un algoritmo Progetto • Implementazione di un'applicazione a linea di comando ore: 16 Il progetto, da sviluppare in team composto al massimo da 2 studenti, richiedera' lo sviluppo di un'applicazione in linguaggio C in grado di acquisire dati da file, da linea di comando o da tastiera, elaborarli utilizzando gli algoritmi e le strutture dati presentate a lezione e salvare gli output su file. Laboratorio • Linguaggio C ore: 16 o IDE per la programmazione (Code::Blocks) o Algoritmi o Linguaggio C o Funzioni e programmazione ricorsiva • DBMS e Linguaggio SQL ore: 8 o Creazione di un database relazionale o Popolamento o Interrogazione o progettazione di interfacce ed applicazioni orientate ai dati TESTI CONSIGLIATI Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, Informatica: Arte e Mestiere ' 4° Ed. McGraw-Hill, pp. 552, 2014. ISBN: 9788838668487. Al Aho and Jeff Ullman, Foundation of Computer Science - infolab.stanford.edu/~ullman/focs.html Facchinetti, Larizza, Rubini "Programmare in C", Apogeo, ISBN: 9788891711208 Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms. Third edition. The MIT Press