programma_fondamenti_2015_16 ( - 205 KB)

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