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
Altre Informazioni
Frequenza delle lezioni: 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.
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 rimane valido SOLO per l’appello in corso di svolgimento. Chi supererà l’esame scritto dovrà quindi sostenere l’orale nello STESSO appello.
In caso di non superamento della prova orale, o in caso di rifiuto del voto finale:
- Lo studente dovrà nuovamente sostenere sia scritto che orale a un appello successivo, e
- l’eventuale prova intermedia precedentemente superata viene annullata (quindi lo studente dovrà sostenere la prova completa a partire dall’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.
Struttura del compito scritto:
Il compito sarà costituito da due parti:
- Parte su “Java--“, in cui si dovrà svolgere un esercizio Java incentrato sugli argomenti visti nel primo semestre del corso. Gli studenti che hanno superato e vogliono far valere la prova intermedia sono esentati da svolgere questa parte del compito. Si ricorda che lo studente, per provare a migliorare la valutazione della sua prova intermedia, può comunque decidere di svolgere anche questa prima parte del compito. In questo caso, al momento della sua consegna, la prova intermedia viene annullata indipendentemente dalla valutazione del compito stesso.
- Parte su “Java“, in cui si dovrà svolgere un esercizio Java incentrato sugli argomenti visti nel secondo semestre del corso. Questa parte deve essere svolta da tutti gli studenti.
Se lo studente supera anche l’esame orale, il voto finale viene calcolato tenendo conto della valutazione del compito scritto e della valutazione della prova 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 ad entrambe le prove intermedie. La partecipazione dello studente alla seconda prova intermedia, ovvero la sua presenza al momento dell'appello per la seconda prova, annulla immediatamente la prima prova intermedia eventualmente superata con valutazione positiva. Nota bene: l'annullamento avviene al momento in cui lo studente si presenta all'appello, indipendentemente dal fatto che lo studente consegni o meno la seconda prova intermedia.
Il superamento della prova intermedia permetterà agli studenti di sostenere il compito scritto in forma «ridotta», ovvero con meno esercizi da svolgere durante il compito in laboratorio. In particolare, gli studenti con la prova intermedia superata potranno non svolgere gli esercizi del compito sulla parte di “Java--” e svolgere quindi soltanto gli esercizi sulla parte di “Java“.
Gli studenti, per provare a migliorare la valutazione della loro prova intermedia, possono comunque decide di svolgere il compito scritto in forma completa consegnando anche gli esercizi sulla parte di “Java--”. In questo caso la prova intermedia è annullata indipendentemente dalla valutazione del compito stesso.
La prova intermedia viene annullata (quindi non sarà più valida) se:
- Lo studente non supera la prova orale;
- Lo studente rifiuta il voto finale;
- Lo studente, per provare a migliorare la valutazione della sua prova intermedia, decide di svolgere comunque il compito scritto in forma completa consegnando anche gli esercizi sulla parte di “Java--”. In questo caso la prova intermedia viene annullata indipendentemente dalla valutazione del compito stesso.
La prova intermedia NON viene annullata nel caso in cui lo studente consegni il compito in forma ridotta (solo gli esercizi sulla parte di "Java") e questo non venga ritenuta sufficiente. In questo caso lo studente potrà nuovamente far valere la sua prova intermedia a partire dall'appello successivo.
Se lo studente supera anche l’esame orale, il voto finale viene calcolato tenendo conto della valutazione della prova intermedia, della valutazione del compito scritto (in forma «ridotta»), e della valutazione della prova 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 Generica. Strutture di dati e Collezioni.