Programmazione 2 (Matematica)
Indice
- Avvisi
- Programma del corso
- Libri di testo consigliati
- Materiale didattico aggiuntivo
- Materiale usato durante i laboratori
- Progetti d'esame
- Iscrizioni agli appelli
- Modalit� d'esame
- Ricevimento studenti
Avvisi
- Appello di febbraio. Gli studenti interessati a partecipare all'appello di febbraio sono pregati di compilare questo form entro il 10 febbraio 2017. L'esame è per gruppi di due o tre persone; eccezionalmente ammetterò anche gruppi di una persona, su motivata richiesta.
- Esempio. Nella sezione sul materiale didattico aggiuntivo è disponibile un esempio di una prova di laboratorio (analoga a quella di gennaio).
- Lezione straordinaria del 10/1. Si terrà una lezione straordinaria il 10/1, alle ore 9:30, in Aula MN in via Mangiagalli 32, e non in Aula 6 come precedentemente annunciato.
Appelli
Importante: per partecipare a qualunque appello gli studenti devono iscriversi presso il SIFA.Gli appelli di Gennaio e Febbraio 2017 si svolgeranno con le seguenti modalità e nelle seguenti date:
- Gennaio: Si svolgerà una prova di laboratorio individuale, in una data che verr� fissata in seguito (intorno a fine gennaio). Gli studenti con valutazione positiva potranno verbalizzare direttamente il voto proposto.
- Febbraio: Verso la fine di gennaio verrà pubblicato il tema per l'appello di Febbraio. Si tratta di un progetto da svolgersi in gruppi di al massimo tre persone, e la cui consegna sarà indicativamente verso met� febbraio. I gruppi che avranno ricevuto una valutazione sufficiente saranno convocati per un orale individuale.
A parte gli esami di Gennaio e Febbraio 2017, tutti gli altri appelli vengono di fatto svolti su appuntamento. Gli studenti interessati sono pregati di contattare il docente circa tre settimane prima della data prevista per l'appello.
- Appello di gennaio 2017: TBA
- Appello di febbraio 2016: TBA
- Appello di aprile 2016: su appuntamento
- Appello di giugno 2016: su appuntamento
- Appello di luglio 2016: su appuntamento
- Appello di settembre 2016: su appuntamento
Orario del corso
Le lezioni si terranno in Aula 2 (via Saldini) con il seguente orario settimanale:
- mecoledì, ore 10:30-13:30 (ultima ora usata solo come recupero);
- venerdì, ore 10:30-12:30.
Programma di massima del corso di Programmazione (A.A. 2016/2017)
Il corso � costituito da una parte di teoria e una di laboratorio. Gli argomenti trattati nella parte di teoria saranno i seguenti (i numeri indicati fra parentesi quadre si riferiscono ai corrispondenti capitoli nel libro adottato per il corso, Dai fondamenti agli oggetti).
- Introduzione al corso, scopo e finalit�
- Cos'� l'informatica [1.1]
- Dagli algoritmi ai programmi [1.2]
- Linguaggi di programmazione (macchina, assembly, alto livello)
- Classificazione dei linguaggi di alto livello
- imperativi
- funzionali
- logici
- a oggetti
- Ciclo di vita del software
- Crisi del software
- Programmazione strutturata [1.9]
- Concetti di variabile, tipo, assegnamento [1.10]
- Selezione (decidere se n � pari o dispari) [1.11]
- Iterazione (somma primi n numeri; cosa succede se n=0?; calcolo somma di seq.; calcolo media; calcolo media pari/dispari; calcolo MCD) [1.11]
- Altri esempi (x*y mediante somme iterate, x/y mediante sottrazioni iterate) [1.11]
- Introduzione alla programmazione a oggetti [1.12]
- Aspetti sintattici [1.13]
- BNF e carte sintattiche [1.13]
- Cenni della grammatica di Java [1.14]
- Primi esempi di programmi in Java [1.15]
- Invocazioni di metodi [2.1.1]
- Invocazione di costruttori [2.1.1]
- Classi per I/O [2.1.1, 2.1.2]
- Esempi [2.1.2]
- Prototipi, segnature, overloading [2.2]
- Classe String: costruttori e oggetti [2.3]
- Tipi di variabili: primitivi, riferimenti [2.4]
- Esempi (la classe Frazione) [3.1]
- Uso della classe Frazione [3.1]
- Principi di buona programmazione: commenti, indentazione, cenno a javadoc ([7.8])
- if [3.2]
- Il tipo boolean e operatori logici [3.3, 3.4]
- Cicli: while, do, for [3.5, 3.6]
- Esempi (fra cui: palindrome) [3.5, 3.6]
- Istruzioni break e continue [3.7]
- Cicli infiniti
- Espressioni: tipo, valore [4.1]
- Effetti collaterali [4.1]
- Lazy evaluation [4.1]
- Tipi numerici interi e operatori [4.3, 4.2]
- Tipi numerici floating point e operatori [4.4, 4.2]
- Conversioni di tipo e cast [4.5]
- Operatore +; il metodo toString [4.5]
- Tipo char; relazione con i tipi interi [4.6]
- Regole di precedenza
- Costanti
- Istruzione switch [4.8]
- Metodi statici [4.9]
- Classi involucro [4.10]
- Boxing e unboxing [4.10]
- Tipi enumerativi (cenni) e loro uso negli switch [4.7]
- Array con esempi [5.1]
- Cicli foreach per array [5.2]
- Cenni ad array a pi� dimensioni [5.6]
- Parametri del main [5.3]
- Esempi
- Sequenza e uso delle classi generiche [5.7]
- Classe Rettangolo [6.1]
- Classe Quadrato [6.3]
- Relazioni fra Quadrato e Rettangolo [6.4]
- Ereditariet�
- Rappresentazione UML
- Overriding
- Uso dei riferimenti
- Polimorfismo
- instanceof
- Esempio FigureAreaMax
- Classe Cerchio
- Introduzione alle classi astratte [6.5]
- Riepilogo: gerarchia delle classi, gerarchia dei tipi [6.6]
- Classe Object [6.6]
- Uso dei tipi riferimento (promozioni, cast) [6.7]
- Dynamic binding [6.8]
- Un esempio [6.9]
- Cenni ai package
- Gestione di file [6.10]
- Esempi [6.11]
- Interfacce [6.12]
- Interfacce e tipi [6.12]
- Implementazione di classi: la classe Frazione [7.1, 7.2]
- La classe Orario [7.4]
- Metodi e campi statici [7.5]
- Modificatore final (per gli attributi)
- Riepilogo sui membri delle classi [7.6]
- Garbage collection [7.6]
- Implementazione di un'interfaccia [7.7]
- Ereditariet� (la classe Quadrato) [8.1]
- Costruttori e ereditariet� [8.2]
- Estensioni di classi astratte
- Adombramento di variabili: uso di this
- Uso di super [8.3]
- Overloading di metodi e costruttori [8.4, 8.5]
- Modificatori di accesso [7.10, 8.13]
- Modificatore final per i metodi e le classi
- Il metodo equals [8.7]
- Esempi di classi e ereditariet� [8.9, 8.10, 8.11]
- Invocazione di costruttori e metodi [8.2]
- Passaggio di parametri [10.1]
- Per valore
- Cenni ad altri metodi
- Passaggio per riferimento
- Varargs
- Organizzazione della memoria [10.2]
- Stack e record di attivazione [10.2]
- Metodi ricorsivi [10.3]
- Notazione postfissa
- Introduzione alle eccezioni [11.1]
- Eccezioni [11.2]
- Notazione postfissa con eccezioni [11.4]
- Sollevare eccezioni [11.6]
- Eccezioni controllate e non controllate [11.8]
Le lezioni di laboratorio consisteranno in esercitazioni guidate sulle tematiche trattate nel corso; nelle prime lezioni, inoltre, verranno discussi i seguenti argomenti:
- Accesso a Linux
- Breve discussione sull'uso dell'ambiente
- Workspaces e movimenti
- Creazione di terminali
- Finestre: massimizzazione, minimizzazione, chiusura, iconizzazione
- Finestre: spostamento
- Filesystem e sua struttura
- Il comando ls; opzioni al comando ls
- Il comando man
- Il comando pwd
- Il comando cd
- Creare una directory
- Creare un file: uso di ne
- Mostrare un file: il comando cat
- Il comando grep
- Redirezionare i flussi
- Piping
- Esempi
- Tipi di traduttori: compliatori, interpreti
- Java e la JVM
- Scrittura di un programma Java
- Creare una directory dove mettere l'esempio
- Creare, dentro la directory, una gerarchia per il pacchetto
- Editing di due classi dentro la gerarchia
- Compilazione: javac
- Effetto: le classi bytecode
- Esecuzione: java
- Uso di Eclipse
- Crazione di un nuovo progetto Java (Esercitazioni)
- Cosa succede nel filesystem?
- Creazione di un nuovo package (it.unimi.dsi.sei)
- Cosa succede nel filesystem?
- Creazione di una classe (copiando il testo di una esistente)
- Cosa succede nel filesystem?
- Commenti
- Controllo sintattico on-line
- Salvare
- Cosa succede nel filesystem?
- Creazione di un'altra classe
- Commenti
- Completamento automatico metodi
- Compilazione ed esecuzione: dentro Eclipse
- Compilazione ed esecuzione: fuori da Eclipse
- Prova a modificare il programma
Libri consigliati
Il testo consigliato per il corso �:
G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA, Addison-Wesley, Pearson Education Italia.
Materiale didattico aggiuntivo
È disponibile il file .jar e la documentazione delle classi distribuite con il libro di testo consigliato. Sono forniti:
- il file .jar delle classi del pacchetto prog
- la documentazione delle API del pacchetto prog.
Infine, è disponibile un esempio di testo dell'esame di gennaio.
Materiale didattico usato durante i laboratori
- Laboratorio del 30/9/2016:
- L'infinito di Giacomo Leopardi
- La Divina Commedia di Dante Alighieri
- Voti di Paolo Boldi
- Amici
- Laboratorio del 12/10/2016:
- Programma Saluti.java
- Programma Quarantaquattro.java
- Programma QuarantaquattroBis.java
- Programma Narciso.java e relativa libreria sf.jar
- Per i pi� curiosi, il sorgente della libreria
- Laboratorio del 19/10
- Laboratorio del 28/10
- Laboratorio del 04/11
- Laboratorio dell'11/11
- Laboratorio del 25/11
- ProgettoFrazione.zip contenente le classi (incomplete) usate nella lezione del 30/11
- Laboratorio del 02/12
- Il materiale della lezione del 14/12 (amazon.zip);
- Laboratorio del 16/12
- Laboratorio del 21/12
- Laboratorio del 13/01
- Laboratorio da svolgere a casa
Modalit� d'esame
Appello di gennaio 2017. Per il solo appello di gennaio 2017, e limitatamente ai soli studenti che abbiano seguito il corso in questo anno accademico, si terr� una prova in laboratorio, da svolgersi individualmente; chi superer� la prova con valutazione sufficiente potr� verbalizzare il voto conseguito senza presentare alcun progetto e senza sostenere l'orale. Tutti gli altri dovranno presentarsi negli appelli successivi e sostenere l'esame secondo le modalit� usuali sotto indicate.
L'esame di Programmazione consiste nello svolgimento di un progetto (che pu� essere sviluppato individualmente oppure in gruppi di al massimo tre persone) e in un orale.
I temi dei progetti verranno proposti dal docente. Ogni gruppo che intenda sostenere l'esame deve, prima di iniziare a sviluppare il progetto, contattare il docente; � possibile in questa sede proporre di svolgere il progetto su un tema diverso, ma in tal caso il docente dovr� valutare se il tema proposto sia pertinente.
Modifica alle modalit� d'esame
Queste modalit� d'esame possono essere soggette a revisioni nel corso dell'anno. Ogni modifica verr� comunicata per tempo agli studenti, e comunque prima del primo appello disponibile.
Ricevimento studenti
Il docente riceve nel suo studio di Via Comelico, 39/41, su appuntamento. Un appuntamento pu� essere fissato a lezione, oppure inviando una mail al docente e attendendo una risposta di conferma.