Numero di ore:
45 (lezioni in aula) + 36 (esercitazioni in laboratorio)
Numero di CFU (Crediti Formativi Universitari):
5 (lezioni) + 3 (laboratorio)
Lezioni in aula: E. Giovannetti (orario di ricevimento)
Compiti per il lavoro individuale assegnati durante il corso
Esercitazioni in laboratorio turni T1 e T2: E. Giovannetti
Esercitazioni in laboratorio turno T3: G. Petrone
Esercitazioni in laboratorio turno T4: V. Bono
Il corso ha lo scopo di fornire i concetti di base della programmazione
imperativa e ad oggetti,
attraverso l'uso del linguaggio Java.
Competenze attese e propedeuticità
Le lezioni in aula sono svolte con l'ausilio del calcolatore e del proiettore
(lucidi, esecuzione di programmi, ecc), integrati, quando opportuno, con l'uso di gesso e lavagna.
Numeri e sistemi di numerazione: decimale, ottale, binario, esadecimale; frazioni e rappresentazioni
con la virgola (decimale, ottale, binaria, ecc.). Algoritmi, macchine, programmi.
Struttura del calcolatore. Linguaggio-macchina e linguaggi di programmazione ad alto livello.
Codifica dei caratteri (codice ASCII, codice Unicode). Tipi di file: puro testo, testo formattato, eseguibile, ecc.
Che cosa è la programmazione imperativa: istruzioni, variabili assegnabili, assegnazione. Variabili e valori.
Che cosa è la programmazione tipata: tipi di valori e tipi di variabili.
Linguaggi interpretati, compilati, semi-interpretati.
Convenzioni di scrittura dei programmi Java: indentazione, identificatori, ecc.
Che cosa è la programmazione con procedure: nozione di procedura o metodo, parametri formali e parametri effettivi (o argomenti),
frame di una procedura, passaggio parametri, variabili locali, variabili globali, costanti.
I valori booleani, gli operatori relazionali e booleani, procedure con argomenti e/o risultati booleani.
Programmazione iterativa e invarianti di ciclo. Il problema del "ciclo e mezzo" e soluzioni possibili.
Le aree di memoria dell'esecutore java. Rappresentazione dello stato della memoria durante l'esecuzione di un programma.
Array in Java: dichiarazione, creazione, accesso agli elementi; programmazione con array, procedure con parametri o risultati di tipo array, ecc.. Nozione di complessità temporale di un algoritmo. Problemi algoritmici su array: ricerca sequenziale, inserimento ed eliminazione di elementi, inserimento ordinato, ricerca binaria, ordinamento per selezione e per inserimento, ordinamento parziale, fusione ordinata, il problema della bandiera tricolore.
Programmazione a oggetti: campi di istanza, costruttori, creazione di oggetti, riferimenti ad oggetti di una classe, variabili di tipo riferimento ad oggetto di una classe, riferimento nullo,
metodi e parametro implicito this, confronto fra campi/metodi statici e di istanza, visibilità e campi privati, array di oggetti.
Invarianti di classe. La classe String.
Semplici problemi di programmazione ad oggetti.
Array parzialmente riempiti e realizzazione di classi per rappresentare collezioni.
Controllo dell'apprendimento durante il corso
Il controllo dell'apprendimento viene effettuato
durante le ore in aula per mezzo di esercitazioni al posto con autocorrezione e di rilevamenti a campione sugli studenti,
alcuni dei quali vengono chiamati alla lavagna a svolgere esercizi o a rispondere
a quesiti.
In laboratorio il controllo viene effettuato monitorando l'attività dei singoli studenti.
Verifica (modalità d'esame)
La verifica si articola in una prova al calcolatore della durata di meno di un’ora
nella quale viene richiesto di risolvere un semplice problema di programmazione,
seguita da una prova scritta di circa due ore in cui si richiede di svolgere
esercizi di vario genere e di risolvere problemi di programmazione di diversa difficoltà,
anche per mezzo di invarianti.
Il superamento della prova di laboratorio, la cui valutazione è espressa
su tre livelli di sufficienza ed uno di insufficienza,
è condizione necessaria per poter accedere alla prova scritta.
Infine, all’atto della registrazione può venire richiesta
una breve discussione orale del compito,
che può portare in qualche caso ad una lieve correzione del voto finale.
La verifica è orientata ad accertare la capacità dallo studente di risolvere
problemi di programmazione in modo corretto e pulito,
sostenuta dalla esatta comprensione di una semantica informale ma rigorosa delle parti del linguaggio Java utilizzate nel corso.
[Corso di Studi di Informatica] |
Last update: Jul 28, 2016 | |