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.
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 ed esercitazioni in aula. Esercitazioni in laboratorio informatico.
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 sui pc di laboratorio, senza l'utilizzo di appunti, libri, o altro tipo di supporto;
- 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), senza l'utilizzo di appunti, libri, o altro tipo di supporto.
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.
La prova scritta è:
- OPZIONALE, a discrezione dello studente, nel caso in cui lo studente abbia superato entrambe le prove intermedie.
- OBBLIGATORIA in tutti gli altri casi (nessuna prova intermedia superata o solo una prova intermedia superata).
La qualità della prova scritta sarà associata alle seguenti fasce di valutazione:
- Fascia ALTA: voto della prova nell’intervallo [29-30] (in trentesimi);
- Fascia MEDIO-ALTA: voto della prova nell’intervallo [26-28] (in trentesimi);
- Fascia MEDIA: voto della prova nell’intervallo [23-25] (in trentesimi);
- Fascia MEDIO-BASSA: voto della prova nell’intervallo [20-22] (in trentesimi);
- Fascia BASSA: voto della prova nell’intervallo [18-19] (in trentesimi);
- Fascia NON SUFF: prova non superata - non sufficiente.
Nel caso in cui lo studente decida di non sostenere la prova scritta, la fascia di valutazione sarà determinata esclusivamente dalla media della votazione ottenuta nelle due prove intermedie superate.
La prova orale è:
- OPZIONALE, a discrezione dello studente, nel caso in cui la votazione complessiva della prova scritta sia di Fascia ALTA o Fascia MEDIO-ALTA.
- OBBLIGATORIA nel caso in cui la votazione complessiva della prova scritta sia di Fascia MEDIA, Fascia MEDIO-BASSA o Fascia BASSA.
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 su "Java--" 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 su "Java--" 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. Gli studenti che hanno superato e vogliono far valere la prova intermedia su "Java" 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 seconda parte del compito. In questo caso, al momento della sua consegna, la prova intermedia su "Java" viene annullata indipendentemente dalla valutazione del compito stesso.
Se lo studente sostiene e supera anche l’esame orale, il voto finale viene calcolato come media tenendo conto della valutazione del compito scritto (e delle eventuali prove intermedie superate) e della valutazione della prova orale.
Durante l'anno si terranno due prove intermedie:
- Nel mese di febbraio: prova intermedia relativa alla parte del corso su Java-- (prof. Lollini). Se necessario dal punto di vista logistico, la prova sarà tenuta su più giorni.
- Nel mese di maggio: prova intermedia relativa alla parte del corso su Java (prof. Tiezzi). Se necessario dal punto di vista logistico, la prova sarà tenuta su più giorni.
Chi può partecipare:
Possono sostenere le prove intermedie 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.
Regole di partecipazione:
La partecipazione alla prova intermedia su Java è indipendente dalla prova intermedia su Java--: possono iscriversi sia studenti che hanno superato la prova intermedia su Java--, sia studenti che hanno sostenuto ma non superato la prova intermedia su Java--, sia studenti che non hanno sostenuto la prova intermedia su Java--. Il mancato superamento della prova intermedia su Java NON annulla l'eventuale superamento della prova intermedia su Java--.
Vantaggi derivanti dal superamento della prova intermedia:
Il superamento di una delle prove intermedie permetterà agli studenti di sostenere il compito scritto in forma «ridotta», ovvero con meno esercizi da svolgere durante il compito. In particolare, gli studenti con la prova intermedia su Java-- superata potranno non svolgere gli esercizi del compito sulla parte di “Java--” e svolgere quindi soltanto gli esercizi sulla parte di “Java“. Analogamente, gli studenti con la prova intermedia su Java superata potranno non svolgere gli esercizi del compito sulla parte di “Java” e svolgere quindi soltanto gli esercizi sulla parte di “Java--“.
Gli studenti che hanno superato entrambe le prove intermedie, possono scegliere di non sostenere il compito scritto. In questo caso la fascia di valutazione della prova scritta sarà determinata esclusivamente come media delle votazioni delle due prove intermedie superate.
Gli studenti, per provare a migliorare la valutazione delle loro prove intermedie, possono comunque decide di svolgere il compito scritto in forma completa consegnando anche gli esercizi su una o entrambe le parti del compito. La consegna dell'esercizio del compito sulla parte di Java-- annulla l'eventuale prova intermedia su Java-- precedentemente superata, indipendentemente dalla valutazione del compito stesso. Analogamente, la consegna dell'esercizio del compito sulla parte di Java annulla l'eventuale prova intermedia su Java precedentemente superata, indipendentemente dalla valutazione del compito stesso.
Validità della prova intermedia superata:
Una prova intermedia superata, a meno dei casi particolari specificati di seguito, rimarrà valida per tutto l'anno accademico corrente. Una o entrambe le prove intermedie vengono annullate (quindi non saranno più valide) prima della fine dell'anno accademico se:
- Lo studente non supera la prova orale;
- Lo studente rifiuta il voto finale;
- Lo studente, per provare a migliorare la valutazione di una o entrambe le sue prove intermedie, decide di svolgere comunque il compito scritto in forma completa. In questo caso la prova intermedia corrispondente alla parte consegnata, o entrambe in caso di compito completamente svolto, vengono annullate 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 non coperta dalla prova intermedia) e questo non venga ritenuta sufficiente. In questo caso lo studente potrà nuovamente far valere la sua prova intermedia a partire dall'appello successivo.
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.