Programmazione (CCD 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 luglio. Gli studenti interessati a sostenere l'appello di luglio dovranno svolgere il progetto CellAuto, lo stesso richiesto per l'appello di giugno. Il progetto dovr� essere consegnato entro il 5 luglio, e gli orali si svolgeranno il 10 luglio. Gli studenti interessati sono pregati di contattare quanto prima il docente per posta elettronica.
- Appello di giugno. Sono state pubblicate le valutazioni e le date degli orali.
Risultati e appelli
Programma di massima del corso di Programmazione (A.A. 2005/2006)
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. II edizione.
Materiale didattico aggiuntivo
È disponibile il file .jar e la documentazione delle classi distribuite con il libro di testo consigliato; entrambi sono disponibili sia per Java 1.4 (cio�, nella versione distribuita con la prima edizione del libro) sia per Java 1.5 (cio�, nella versione distribuita con la seconda edizione del libro). Naturalmente la versione per Java 1.4 � compatibile con l'uso di compilatori e macchine virtuali Java 1.5, ma non vale il viceversa.
- Per Java 1.5:
- il file .jar delle classi del pacchetto prog
- la documentazione delle API del pacchetto prog.
- Per Java 1.4:
- il file .jar delle classi del pacchetto prog
- la documentazione delle API del pacchetto prog.
Materiale didattico usato durante i laboratori
- Lezione del 3/10.
- Lezione del 12/10.
- Programma Saluti.java
- Programma Quarantaquattro.java
- Lezione del 21/10.
- Problemi da risolvere
- Lezione del 11/11.
- Problemi da risolvere
- Lezione del 25/11.
- Problemi da risolvere
- Lezione del 30/11.
- Problemi da risolvere
- Lezione del 14/12.
- Problemi da risolvere
- Vacanze di Natale.
- Problemi da risolvere
- Lezione del 11/01.
- Problemi da risolvere
- Problemi extra.
- Problemi da risolvere
Modalit� d'esame
Appello di febbraio 2006. Per il solo appello di febbraio 2006, 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 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.
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.