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
Esami settembre. L'esame si svolgerà al dipartimento di Matematica, aula 2, alle ore 15.30.
L'agitazione continua. Gli interessati possono scaricare una presentazione PowerPoint [sic] che illustra i danni che il DDL Moratti arrecherebbe all'università italiana. Se siete interessati alle problematiche legate al DDL Moratti, potete trovare maggiore informazioni sul twiki dei ricercatori DICo, DSI e DTI; su questa pagina troverete anche un modulo di adesione per gli studenti.
Programma di massima del corso di Programmazione (A.A. 2004/2005)
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]
- 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 ([6.8])
- 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
- 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]
- Istruzione switch [4.7]
- Metodi statici [4.8]
- Classi involucro [4.9]
- Array con esempi [4.10, 4.12]
- Esempi
- Classe Rettangolo [5.1]
- Classe Quadrato [5.3]
- Relazioni fra Quadrato e Rettangolo [5.4]
- Ereditarietà
- Rappresentazione UML
- Overriding
- Uso dei riferimenti
- Polimorfismo
- instanceof
- Esempio FigureAreaMax [5.4]
- Classe Cerchio [5.5]
- Introduzione alle classi astratte [5.5]
- Riepilogo: gerarchia delle classi, gerarchia dei tipi [5.6]
- Classe Object [5.6]
- Uso dei tipi riferimento (promozioni, cast) [5.7]
- Dynamic binding [5.8]
- Un esempio [5.9]
- Interfacce [5.12]
- Interfacce e tipi [5.12]
- Implementazione di classi: la classe Frazione [6.1, 6.2]
- La classe Orario [6.4]
- Metodi e campi statici [6.5]
- Modificatore final (per gli attributi)
- Riepilogo sui membri delle classi [6.6]
- Garbage collection [6.6]
- Implementazione di un'interfaccia [6.7]
- Ereditarietà (la classe Quadrato) [7.1]
- Costruttori e ereditarietà [7.2]
- Estensioni di classi astratte
- Adombramento di variabili: uso di this
- Uso di super [7.3]
- Overloading di metodi e costruttori [7.4, 7.5]
- Modificatori di accesso [6.10, 7.12]
- Modificatore final per i metodi e le classi
- Il metodo equals [7.6]
- Esempi di classi e ereditarietà [7.9, 7.10, 7.11]
- Invocazione di costruttori e metodi [9.1]
- Notazione postfissa [10.1]
- Introduzione alle eccezioni [10.2]
- Eccezioni [10.2]
- Notazione postfissa con eccezioni [10.3]
- Sollevare eccezioni [10.5]
- Eccezioni controllate e non controllate [10.7]
- API standard
- Il pacchetto java.util
- Gerarchia Collection:
- Set e sue implementazioni
- Map e sue implementazioni
- Esempi d'uso
- Il pacchetto java.io
- Classi di I/O: differenza fra stream e reader/writer
- Esempi d'uso
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. In libreria da settembre 2003.
Per la prima parte del corso, segnaliamo:
S. Ceri, D. Mandrioli, L.Sbattella: Informatica arte e mestiere, McGraw-Hill, 1999.
Materiale didattico aggiuntivo
È disponibile:
- il file .jar delle classi del pacchetto prog
- la documentazione delle API del pacchetto prog.
Materiale didattico usato durante i laboratori
- Lezione del 20/10.
- Lezione del 29/10.
- Programma Saluti.java
- Programma Quarantaquattro.java
- Problemi da risolvere
- Lezione del 22/11.
- Problemi da risolvere
- Lezione del 1/12.
- Problemi da risolvere
- Lezione del 13/12.
- Problemi da risolvere
- Lezione del 22/12.
- Problemi da risolvere
- Lezione del 14/1.
- Problemi da risolvere
- Lezione del 19/1.
- Problemi da risolvere
Progetti d'esame
Testo dei progetti d'esame:
- String Calculator (gennaio 2005 -> aprile 2005)
Iscrizioni agli appelli
Appello | Testo progetto | Elenco iscritti |
---|---|---|
Febbraio 2005 | String Calculator | Elenco iscritti |
Aprile 2005 | ||
Giugno 2005 | Elenco iscritti |
Modalità d'esame
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 indicativamente ogni quattro mesi (a gennaio, maggio e settembre), e rimarranno validi per tutto il periodo. 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.
Il docente concorderà con i gruppi una data di consegna e una di discussione (la discussione avverrà tipicamente alcuni giorni dopo la consegna, per dare il tempo al docente di correggere e valutare il progetto). Se il docente ritiene che il progetto sia sufficiente, ammette il gruppo alla discussione.
Le discussioni dei progetti sono finalizzate prevalentemente a verificare il contributo individuale fornito nel gruppo: per questo motivo, le discussioni sono individuali. Alla discussione segue un orale che riguarda le tematiche trattate nel corso.
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 il giovedì, dalle ore 13.30 alle ore 14.30, nel suo studio di Via Comelico, 39/41 (II piano), su appuntamento. Un appuntamento può essere fissato a lezione, oppure inviando una mail al docente e attendendo una risposta di conferma.