Il corso ha come scopo quello di introdurre gli studenti al metodo informatico, fornendo le basi metodologiche e le relative conoscenze dei paradigmi di programmazione procedurale e di quello orientato agli oggetti, e delle tecniche algoritmiche per la risoluzione di problemi e la verifica sperimentale dei programmi.
P. Crescenzi, Gocce di Java, Franco Angeli, 2014.
Java per Impazienti, Cay Horstmann, Pearson 2018.
Obiettivi Formativi
Le competenze attese per lo studente sono quelle di analizzare e schematizzare un problema, costruirne una soluzione servendosi degli strumenti algoritmici e di programmazione, saperne provare la correttezza e verificarne l'efficienza. Al termine del corso, gli studenti saranno in grado di implementare algoritmi per diversi tipi di problemi utilizzando un linguaggio di programmazione (in particolare, Java).
Prerequisiti
Nessun prerequisito.
Metodi Didattici
lezioni in aula e alcune esercitazioni in laboratorio
Altre Informazioni
Frequenza delle lezioni ed esercitazioni: raccomandata.
Strumenti a supporto della didattica: http://e-l.unifi.it.
Modalità di verifica apprendimento
L’esame di Programmazione consiste di:
- Scritto: uno o più esercizi da svolgere in laboratorio, utilizzando i computer del laboratorio, senza appunti, libri, cellulari, dispositivi portatili. Durante l’esame, i computer del laboratorio non saranno connessi in rete;
- Orale: domande su tutto il programma (facendo riferimento ai libri di testo del corso e le dispense integrative, come riportato sul sito Moodle del corso).
Si può sostenere l’orale solo dopo aver superato lo scritto (cioè se viene presa almeno la sufficienza allo scritto).
Si può sostenere l’esame (sia scritto che orale) in un certo appello solo dopo essersi prenotati sul sito apposito dell’ateneo. Al momento della prenotazione, lo studente deve lasciare un commento specificando se vuole sostenere solo lo scritto o solo l’orale. In mancanza di un commento nella prenotazione, si assume che lo studente intende sostenere in quell’appello sia lo scritto che l’orale (se lo scritto viene superato).
Condizioni necessarie (ma non sufficienti) per superare lo scritto sono tutte le seguenti:
- Il codice compila senza errori
- Il codice rispetta tutte le specifiche del testo dell’esercizio
- Tutti i test automatici forniti dai docenti hanno successo
Lo scritto vale per tutto l’anno accademico, quindi lo studente che ha superato lo scritto può sostenere l’orale sia nello stesso appello sia in un appello successivo. La data dell’orale verrà comunicata dopo l’esame scritto e indicativamente sarà il giorno dopo o qualche giorno dopo la data dello scritto.
Se lo studente decide di rifiutare il voto dello scritto, perché intende ridare l’esame scritto nei prossimi appelli, deve comunicarlo il giorno stesso in cui vengono pubblicati i risultati dello scritto. In mancanza del rifiuto del voto dello scritto, lo studente non potrà sostenere nuovamente lo scritto nell’appello successivo (ma solo in quelli che seguiranno).
Lo scritto viene annullato, e quindi deve essere sostenuto nuovamente, se:
- Lo studente non supera l’esame orale (cioè non prende la sufficienza all’orale)
- Lo studente si prenota per l’esame orale ma non si presenta senza darne preavviso
- Lo studente rifiuta il voto finale
Se lo studente supera anche l’esame orale, il voto finale viene calcolato facendo la media del voto dello scritto e del voto dell’orale.
Prove intermedie (in itinere)
----------------------------
Possono sostenere le prove in itinere solo:
- Gli studenti del primo anno
- Gli studenti degli anni precedenti che non si sono mai iscritti all’esame di Programmazione degli anni accademici precedenti
Uno studente può iscriversi a solo una delle due prove intermedie.
La prova intermedia consiste in uno scritto sugli argomenti trattati nel primo semestre del corso (Java--), e prevede uno o più esercizi da svolgere in laboratorio, utilizzando i computer del laboratorio, senza appunti, libri, cellulari, dispositivi portatili. Durante l’esame, i computer del laboratorio non saranno connessi in rete;
Il superamento della prova in itinere permetterà agli studenti di sostenere il compito scritto in forma «ridotta», ovvero con meno esercizi da svolgere durante il compito in laboratorio. Valgono comunque le regole principali sull’esame scritto e orale.
Programma del corso
Algoritmi e programmi. Progettazione, analisi, implementazione e debugging. Rappresentazione dell’informazione. Programmazione procedurale. Il linguaggio Java. Tipi primitivi. Controllo del flusso. Metodi. Ricorsione. Programmazione orientata agli oggetti. Classi e oggetti. Interfacce e Ereditarietà. Programmazione funzionale. Programmazione Generica. Strutture di dati e Collezioni. Tecniche per la progettazione e l’implementazione di programmi. Verifica manuale e automatica dei programmi con test unitari.