Nome insegnamento: Fondamenti di Informatica
Articolazione in moduli: NO
Settore Scientifico Disciplinare: ING-INF/05
Docente responsabile:
Francesco Scarcello
Crediti formativi universitari: 6
Numero ore lezioni: 38
Numero ore riservate attività didattiche assistite: 56 Numero ore esercitazioni: 18
Numero ore attività di laboratorio:
Tipologia di attività formativa (TAF): ATTIVITA’ DI BASE
Lingua di insegnamento: Italiano
Anno di corso e Periodo didattico di erogazione: I anno, I semestre
Insegnamento/i Propedeutico/i: NESSUNO
Risultati d’apprendimento previsti e competenze da acquisire:
Il corso mira a fornire solide basi in merito alla programmazione dei calcolatori elettronici per risoluzione
di problemi con il linguaggio Java, facendo uso di strutture dati semplici.
Competenze da acquisire:
 comprensione dei principi della programmazione dei calcolatori
 comprensione dei principi dell’architettura dei calcolatori elettronici
 comprensione dei principi della rappresentazione dell’informazione digitale
 capacità di utilizzo degli strumenti linguistici di base del linguaggio Java (istruzioni e tipi)
 capacità di utilizzo di strutture ad array e stringhe
 conoscenze di base sugli aspetti object-oriented di Java
 abilità a progettare la risoluzione di problemi mediante un approccio algoritmico
 abilità a realizzare una soluzione algoritmica in linguaggio Java
 abilità a verificare la correttezza di un programma Java per la risoluzione di un problema dato
 abilità a introdurre elementi di programmazione all’interno di pagine WEB
Argomenti delle lezioni:
Introduzione ai calcolatori, Internet e WEB (lezione: 6 ore, esercitazione: 2 ore)
Introduzione all’Informatica. La rappresentazione binaria dell’informazione: caratteri, numeri naturali,
interi, reali. Algebra di Boole. Organizzazione di un computer e il modello di von Neumann. Il linguaggio
macchina. Macchina RASP. Il sistema operativo. I linguaggi di programmazione ad alto livello.
Compilazione e interpretazione. Le applicazioni informatiche. Reti di calcolatori e Internet. Il WEB. Il
linguaggio HTML e il protocollo HTTP. Accesso a pagine WEB. Applicazioni su WEB. Il WEB 2.0.
Problemi, algoritmi e programmi (lezione: 3 ore)
Le nozioni di problema, algoritmo ed esecutore. Risoluzione algoritmica di un problema. Correttezza ed
altre proprietà degli algoritmi. Esempi di algoritmi. Cenni alla valutazione dell’efficienza degli algoritmi.
Algoritmi e programmi. I concetti di variabile e tipo di dato.
Introduzione alla programmazione in Java (lezione: 8 ore, esercitazione: 4 ore)
Il linguaggio Java. Codifica di algoritmi in programmi Java. Struttura di un programma. Introduzione ai
tipi, classi, campi e metodi. Il metodo main. Variabili e tipi primitivi. Istruzioni semplici. Compatibilità di
tipo nell’assegnazione. Strutture di controllo del flusso di elaborazione. Operatori di ingresso/uscita.
Sviluppo incrementale di programmi.
Metodi e oggetti in Java (lezione: 9 ore, esercitazione: 6 ore)
Introduzione all’uso di oggetti in Java. Uso della classe String per la gestione di stringhe. Definizione e
chiamata di metodi statici in Java. Campo di azione di un identificatore. Modello di esecuzione dei metodi
statici e passaggio dei parametri. Aspetti semantici e strutture di supporto all’esecuzione dei metodi
statici: lo stack ed i record di attivazione. Cenni ai metodi non statici, classi ed oggetti. La classe Applet.
Costruzione di applet Java ed integrazione in pagine HTML.
Programmazione con array (lezione: 6 ore, esercitazione: 4 ore)
Il costruttore di tipo array. Tipi array monodimensionali. Tipi array multidimensionali. Cenni
all’allocazione dinamica della memoria e gestione dello heap. Aliasing tra variabili di tipo array.
Manipolazione di array. Richiami di algebra lineare. Modellazione e gestione di vettori e matrici mediante
array.
Tecniche di programmazione (lezione: 6 ore, esercitazione: 2 ore)
Algoritmi di ricerca e ordinamento su array: la ricerca lineare, selection sort, insertion sort, bubble sort.
La ricerca binaria. Metodi ricorsivi. Semplici algoritmi ricorsivi (es. calcolo della potenza di un numero,
calcolo del fattoriale, etc. ). Versione ricorsiva della ricerca binaria. L’algoritmo merge sort.
Argomenti delle esercitazioni:
Strumenti di editing di testo. Editing di documenti HTML. Installazione ed utilizzo di ambienti di sviluppo
di applicazioni in Java.
Progetto e realizzazione di esempi di codice Java basati sui concetti presentati a lezione con l’utilizzo di
strumenti software di ausilio alla programmazione.
Sviluppo di progetti didattici in Java.
Modalità di erogazione della didattica:
lezioni frontali
Metodi di valutazione:
Prova scritta e prova orale
Criteri di valutazione dell’apprendimento:
Gli esercizi della prova scritta sono progettati in modo da poter valutare che lo studente sia in grado di
comprendere un programma scritto in Java, di risolvere in modo algoritmico semplici problemi e di
implementare tali algoritmi nel linguaggio Java. Le domande della prova orale permettono di
complementare la verifica dei risultati di apprendimento previsti, quali le competenze sui principi
dell’architettura dei calcolatori o la scelta dell’algoritmo di appropriato per la soluzione di un problema
noto.
Criteri di misurazione dell’apprendimento:
Voto finale in trentesimi. Tale voto terrà conto della valutazione ottenuta in entrambe le prove.
Criteri di attribuzione del voto finale:
Testi di riferimento e materiale didattico utilizzato e consigliato:
Materiale didattico messo a disposizione del docente sulla piattaforma on-line.
http://icampus.dimes.unical.it
Testi di riferimento:
 Cabibbo – FONDAMENTI DI INFORMATICA Oggetti e Java, McGraw-Hill, 2013.
 R. Bruni, A. Corradini, V. Gervasi – PROGRAMMAZIONE IN JAVA, Apogeo, 2008.
 L. Nigro – FONDAMENTI DI INFORMATICA Programmazione Orientata agli Oggetti in Java,
Edizioni LUIM.
Altri testi per consultazione e approfondimenti:
 C.S. Horstmann, Concetti di Informatica e Fondamenti di Java, Apogeo, 2008.
 M. Bertacca, A. Guidi - Programmare in Java, McGraw-Hill, 2007
Orario e aule lezioni:
Calendario prove valutazione:
http://www.dimes.unical.it/index.php/didattica