martedì 12 novembre 2013

Appello del 14 novembre 2013, aula I NEC

L'appello scritto straordinario di novembre avrà luogo giovedì 14 in aula I NEC alle ore 10. La prenotazione su Infostud è obbligatoria.

martedì 27 agosto 2013

Appello del 19 settembre, aula I NEC, ore 14

L'appello scritto di settembre avrà luogo giovedì 19 in aula I NEC alle ore 14. La prenotazione è obbligatoria al solito modulo (è necessario essere loggati al gruppo).

venerdì 31 maggio 2013

Lezione 31/5/2013: sigleton e decorator; conclusione del corso

Permettere una singola istanza per una classe: il Singleton Pattern. L'esempio di Paperino e della rete semantica. Il Decorator Pattern: aggiungere responsabilità a una classe senza che essa lo sappia. L'esempio della rappresentazione grafica delle automobili. Conclusione del corso!

APPELLO EXTRA DI LUGLIO!!!
  • scritto: giovedì 25 luglio, aula V MAT ore 9
  • consegna progetto: 24 luglio, entro le ore 22 all'indirizzo email: progetto.naviglimetodologie chiocciola gmail.com
  • discussione progetto, eventuale orale e verbalizzazione: 31 luglio, dalle ore 9 (studio del docente)
Tutte le informazioni aggiornate sugli appelli si trovano sulla pagina relativa alle informazioni sul corso.

mercoledì 29 maggio 2013

Lab 29/5/2013: reflection, rilascio del codice ed esercizi

Introduzione alla Reflection. La classe Class. Ottenere un oggetto di tipo Class: da istanze di tipi non primitivi, da tipi primitivi, da tipi non primitivi, per nome: il metodo Class.forName. Scoprire i campi, metodi e costruttori di una classe. Esempio di uso della Reflection: creare intelligenze artificiali a tempo di esecuzione. Richiamare un determinato metodo a tempo di esecuzione.

Rilascio del codice: i file jar. Creazione di un file jar da console e con Eclipse. Jar eseguibili: il manifesto. Esecuzione di un file jar.

Esercizi: GestoreClassi, AlberoBinarioDiRicerca con i generici (provate a renderlo iterabile sui nodi).


Lezione 29/5/2013: fuori programma su PlayN!

Lezione "fuori programma" su PlayN: per chi sta sviluppando il mitico progetto SaGa (Sapienza Games)!


Lezione 28/5/2013: esercizi su design pattern

Esercizi su strategy, observer e singleton pattern. MultiMappa con generici.

venerdì 24 maggio 2013

Lezione 24/5/2013: Design pattern (1/2)

Che cos'è un design pattern. Lo Strategy Pattern: il simulatore di anatre. L'Observer Pattern: un'applicazione di monitoraggio del tempo. La metafora dell'abbonamento. java.util.Observable e java.util.Observer. Separare la creazione degli oggetti. Il Factory Pattern e il Simple Factory Pattern: la pizzeria e la pizzeria in franchising.


mercoledì 22 maggio 2013

Lab 22/5/2013: ancora sui generici ed esercizi

Discussione del progetto Sapy. Sicurezza dei generici a tempo di compilazione: confronto con gli array. Jolly come tipi generici. Esempio: metodo generico di somma. Cancellazione del tipo (type erasure). Esempio: cancellazione del tipo nella classe Coppia e nel metodo getMassimo. Esercizio: cancellazione del tipo nella classe Pila. Esercizi (esonero dell'anno scorso): multiinsieme e multimappa generici.


Lezione 21/5/2013: AWT e Swing

Introduzione alle interfacce grafiche in Java: AWT e Swing. Componenti principali: Container, Panel, Window, Frame, Dialog. Interazione con l'utente. Eventi ed Event Listener. Menù. Altre componenti.


venerdì 17 maggio 2013

Lezione 17/5/2013: esercizio scartaParentesi e tipi generici

Esercizio: metodo ricorsivo scartaParentesi. Tipi generici. Definire e utilizzare una classe generica. Specificare più tipi generici. Estendere le classi generiche. Esercizio: inverti lista generica. Generici e collezioni: interfacce generiche prototipiche. Definire un metodo generico. Calcolare il massimo di una collezione di elementi di tipo generico.

Lab 15/5/2013: esercizio dell'esonero

Svolgimento di tutti (!) gli esercizi dell'esonero.

venerdì 10 maggio 2013

Lectio magistralis: Prof. Silvio Micali

Senza parole! Mi ha insegnato, divertito ed emozionato! Indubbiamente un fuoriclasse planetario. Preparatevi anche voi così: fiducia e dubbio!


giovedì 9 maggio 2013

Lab 8/5/2013: esercizi su ricorsione, file, strutture dati e interfacce

Esercizi su ricorsione: ricerca ricorsiva in un array; contaPercorsi, contaPercorsi con stampa e salvataggio dei percorsi in un HashSet; eccezioni per i casi non ammissibili; caricamento di una mappa da file (Scanner vs. BufferedReader(FileReader)) e inversione della mappa (con gestione delle eccezioni); creazione di una multimappa: gestione del caso in cui la collezione "valore" non esiste e quello in cui invece già esiste; compareTo vs. equals e hashCode. Creazione di una classe Studente comparabile mediante interfaccia Comparable e di una classe Classe iterabile mediante interfaccia Iterable. Creazione di diversi tipi di iteratori per la classe Classe e di un Comparator per la classe Studente.

P.S. La prenotazione (obbligatoria) per l'esonero 3 è aperta.


venerdì 3 maggio 2013

Lezione 3/5/2013: Ancora su strutture dati; input & output in Java

Ancora sulle strutture dati: i metodi keySet, values e entrySet di Map; la classe Arrays e la classe Collections. La classe pila: Stack. L'interfaccia coda Queue e l'implementazione mediante LinkedList. Esercizi con pila e coda: parentesi annidate, inversione degli elementi di una coda, calcolatrice in notazione polacca inversa. Esercizio: gli alberi binari usando classi interne per i nodi.

Input & output: gli oggetti System.out e System.in. InputStream, PrintStream e la classe Scanner. File di testo e file binari. Gli stream. Gerarchie di classi stream. Leggere e scrivere un file di testo: la classe File. Leggere e scrivere un file di testo formattato: le classi Formatter e Scanner. Serializzare e deserializzare un oggetto. L'interfaccia Serializable e il serialVersionUID.

mercoledì 1 maggio 2013

Lezione 30/4/2013: Collezioni

Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Esempio: il Jukebox. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator. Esempi di uso di HashSet e TreeSet. Funzionamento di un HashSet: il metodo hashCode. HashMap e TreeMap: l'interfaccia Map. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator. Insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento.

venerdì 26 aprile 2013

Lezione 26/4/2013: Eccezioni (2)

Il blocco try-catch-finally. La politica catch-or-declare: gestire o ignorare le eccezioni. Creare eccezioni personalizzate. Le parole chiave throw e throws. La classe Throwable. La gerarchia delle eccezioni in Java. Le classi Exception e Error. Eccezioni checked e unchecked. Esercizi (da svolgere a casa): SequenzaAGradini, FloppyDisk, Dizionario e Mappa, Catena di volontari.

Presentazione dei progetti. E' stato creato un nuovo gruppo per la discussione dei Sapienza Games (SaGa)!


mercoledì 24 aprile 2013

Lab 25/4/2013: esercizi su interfacce, classi interne; eccezioni; presentazione del progetto

Esercizi su interfacce: Disney vs. Marvel. Esercizi su classi interne: Liste linkate di interi. Eccezioni. Presentazione del progetto.


Lezione 23/4/2013: Interfacce ed eccezioni (1)

Interfacce in Java: dichiarazione, implementazione. Esempio: Iterabile. Differenza tra interfacce e classi astratte. Ereditarietà multipla. Interfacce notevoli. Esercizio: Successione, Animali. Classi interne: classi top-level, classi annidate e interne. Classi annidate statiche. Utilità delle classi interne. Esercizio: Disney vs. Marvel. Eccezioni. Casi tipici nella programmazione Java. Eccezioni notevoli. Perché non restituire un valore d'errore. Vantaggi e svantaggi delle eccezioni. Cosa gestire e cosa non gestire con le eccezioni.



sabato 13 aprile 2013

15/4/2013: prova intermedia!

La prova si terrà lunedì 15 aprile in aula V MAT e avrà inizio alle ore 8.30. Trovatevi in aula tra le 8 e le 8.10 in aula, per l'assegnazione dei posti.


I risultati finali della prova sono disponibili sul gruppo google del corso!

venerdì 12 aprile 2013

Lezione 12/4/2013: final per classi e metodi; introduzione a interfacce ed eccezioni; esercizi

La parola chiave final per classi e metodi; introduzione a interfacce ed eccezioni; esercizi: EssereVivente, Labirinto, interfacce Resettabile e Totalizzabile, esercizio sulla piccola macchina virtuale (dall'esonero del 24/4/2012).


mercoledì 10 aprile 2013

Lab 10/4/2013: esercizi su ereditarietà e polimorfismo


Esercizi su ereditarietà e polimorfismo: ContoCorrente e Operazione, DistributoreDiBevande, espressioni matematiche (Espressione, Costante, Variabile, EspressioneComposta, ecc.), gioco dell'oca (classi GiocoDellOca, Giocatore, Casella, CasellaVuota, CasellaPunti, CasellaSpostamento), reti sociali e codice HTML (dall'esonero 2012). Sbizzarritevi!




martedì 9 aprile 2013

Lezione 9/4/2013: polimorfismo e classe Object

Polimorfismo: definizione, esempi e casistiche. Esempi: la classe Impiegato, ImpiegatoStipendiato e ImpiegatoACottimo. La parola chiave super per accedere a metodi e campi della superclasse. L'operatore instanceof. Downcasting e upcasting: differenze ed effetti sull'interfaccia pubblica. La classe universale Object e i suoi metodi principali. Sovrascrivere i metodi toString, equals e clone. Enumerazioni e costruttori.

venerdì 5 aprile 2013

Lezione 5/4/2013: ereditarietà

Una lezione molto molto importante sull'ereditarietà: abbiamo introdotto il concetto di ereditarietà, di classi e metodi astratti, parole chiave this e super nei costruttori. Overloading e overriding: significato, contratto e differenze. Modificatori di visibilità: public, private, protected e default. Ereditarietà vs. composizione.


giovedì 4 aprile 2013

Lab del 3/4/2013: primi esercizi sull'ereditarietà e strutture dati ricorsive

Esercizi svolti: ListaDiInteri e ListaOrdinataDiInteri; Punto e PuntoColorato; BarraDiEnergia e BarraDiEnergiaConPercentuale; ElementoLista e ListaLinkataDiInteri. Parola chiave super per l'accesso di campi, metodi e costruttori della superclasse.


giovedì 28 marzo 2013

Lab 27/3/2013: esercizi esonero, enum e CampoMinato

Esercizi svolti in laboratorio: ArrayEspandibile, Prefisso e CampoMinato. Buona Pasqua di programmazione "fuori porta" a tutti/e.


martedì 26 marzo 2013

Lezione 26/3/2013: metodi e campi statici; enumerazioni; auto-(un)boxing

Autoboxing (vedi immagine sotto :-)), auto-unboxing. Classi wrapper e metodi e costanti delle classi wrapper. Enumerazioni: dichiarazione, metodi statici values e valueOf. Un assaggio di ereditarietà

Esempio di autoboxing (scherzo, lo sapete cos'è invece, vero??)

NEW: I risultati della prima prova d'esonero sono online!!!

domenica 24 marzo 2013

Lezione 22/3/2013: esonero 1b + break & continue + ancora su array + numero variabile parametri

Seconda parte della prima prova d'esonero. I risultati sono disponibili (anche un grafico sulle vostre prestazioni, accessibile dal gruppo google)! Nella seconda parte della lezione abbiamo terminato la terza parte sui costrutti iterativi, con le istruzioni break e continue, abbiamo passato nuovamente in rassegna gli array con ulteriori dettagli e visto come si definisce un numero variabile di parametri in Java.

 

mercoledì 20 marzo 2013

Lab 20/3/2013: heap & stack; esercizi su for e array

Abbiamo visto in dettaglio i 4 esercizi d'esonero del 2012 su heap & stack. Quindi abbiamo visto una versione classe dell'esercizio ContaVocali. Infine due versioni, una più semplice e una più elaborata, di SequenzaDiCifre ottenute da stringhe dalle quali vengono estratti solo i caratteri cifra (Character.isDigit e Character.getNumericValue sono d'aiuto!).

Venerdì trovatevi in aula alle 8.10 circa!


Lezione 19/3/2013: ancora sul for + esonero 1a

Eheh ci siete cascati, eh? Ho fatto un breve lezione sul costrutto for e poi "mezza" prova a sorpresa. La seconda parte inizia venerdì alle ore 8.30 (trovatevi in aula alle 8.10).


venerdì 15 marzo 2013

Lezione 15/3/2013: riferimenti e oggetti, heap & stack, metodi statici, Scanner, package, costrutti decisionali

Riferimenti e oggetti. Anatomia della memoria: stack e heap. Metodi statici. Lettura dell'input da console: la classe Scanner. Package. Package standard e package di default. La dichiarazione import e la parola chiave package. Strutture di controllo: if, else, il problema dell'else sospeso, else if, operatore di selezione ?, istruzione switch. Esercizi: estrazione del carattere centrale, saluto casuale. Introduzione ai costrutti iterativi: while, do..while, for. Esercizi: calcolare le potenze di 2 fino a 2^N.

Lab 13/3/2013: esercizi esonero 2012

Abbiamo svolto gli esercizi assegnati la settimana scorsa: RegistratoreDiCassa; Punto e Segmento; MioArray. Inoltre abbiamo visto l'EstrazioneDelLotto e Dado (esercizi del primo esonero 2012). Abbiamo utilizzato il debugger di Eclipse, grazie all'impiego dei breakpoint, e introdotto il ciclo while.

martedì 12 marzo 2013

Lezione 12/3/2013: incapsulamento e inizializzazione di default

Abbiamo parlato di incapsulamento, il primo pilastro della programmazione orientata agli oggetti. Abbiamo visto alcuni degli errori più frequenti (vostri!) nella progettazione delle classi (code horror). Abbiamo introdotto la classe String, con i suoi metodi più importanti. Esercizio: la classe Menu. Esercizio: la classe Stringa42 (da fare a casa).

Domani vedrete in laboratorio lo svolgimento corretto degli esercizi del fine settimana e di alcuni esercizi dell'esonero dello scorso anno! Non mancate!

N.B. Il materiale aggiornato è online, accessibile dal gruppo google, cliccando poi sul link del messaggio di benenuto ("Per accedere al materiale del corso, clicca qui!").



venerdì 8 marzo 2013

Lezione 8/3/2013: classi e oggetti

Abbiamo rivisto ancora una volta i 3 tipi di conversione di tipo: conversione esplicita, cast esplicito e cast implicito. Poi abbiamo iniziato la lezione sui concetti fondamentali di programmazione orientata agli oggetti: classi vs. oggetti, campi e metodi (inclusi i costruttori) e politiche di accesso. Esercizio: La classe Contatore.

N.B. Il materiale aggiornato è online, accessibile dal gruppo google, cliccando poi sul link del messaggio di benenuto ("Per accedere al materiale del corso, clicca qui!").



mercoledì 6 marzo 2013

Lab 6/3/2013: Eclipse, debugging e consapevolezza dei tipi

Abbiamo parlato della compilazione e l'esecuzione in Java "old style", parlato di JRE, JDK ed Eclipse (creazione di progetti, creazione di classi, run configuration), parlato del debugging e di come esso è realizzato in Eclipse e discusso in dettaglio l'importanza della consapevolezza nell'uso dei tipi. Abbiamo parlato di conversioni di tipo, cast espliciti e impliciti. Esercizi: generatore casuale di numeri, Phrase-O-Matic.


martedì 5 marzo 2013

Lezione 5/3/2013: panoramica e tipi di dato primitivi

Oggi abbiamo completato l'introduzione al corso, dato una panoramica sugli argomenti principali del corso (oggetti, incapsulamento, ereditarietà, polimorfismo) e parlato di tipi di dato primitivi, variabili, identificatori, letterali ed espressioni. Abbiamo completato con un esercizio "collaborativo" per il calcolo di un'espressione in Java. Trovate le diapositive aggiornate sul sito google del corso (accessibile tramite il gruppo).

Domani laboratorio! Completeremo la discussione sui tipi di dato e vedremo insieme l'ambiente di sviluppo integrato Eclipse.



 Per chi non l'avesse ancora fatto, iscrivetevi al gruppo google del corso: https://groups.google.com/d/forum/metodologie2013

IMPORTANTE: E' obbligatorio specificare nome, cognome e matricola separati da spazio nella casella dedicata alle informazioni aggiuntive per l'iscrizione, pena la mancata approvazione della richiesta di iscrizione.

lunedì 4 marzo 2013

Lezione 1/3/2013: introduzione

Durante la prima lezione abbiamo parlato del docente, del corso e della sua impostazione. Molti di voi hanno apprezzato l'impronta "ispiratrice" di questa lezione introduttiva. Domani seconda parte dell'introduzione! Le diapositive sono online!

Non dimenticate che uno degli obiettivi di questo blog è permettere la comunicazione tra noi. Per favore, utilizzate i commenti per fornire un utile feedback (alcuni lo hanno fatto "dal vivo" subito dopo la lezione), ma soprattutto il gruppo google del corso.


domenica 27 gennaio 2013

Pronti? Partenza...

Il corso 2012/2013 di Metodologie di Programmazione (secondo semestre, primo anno) inizia venerdì 1 marzo! Siete pronti? (se , leggete sotto).


Per riscaldarvi, iniziate a iscrivervi al gruppo google del corso:

https://groups.google.com/d/forum/metodologie2013

IMPORTANTE: E' obbligatorio specificare nome, cognome e matricola separati da spazio nella casella dedicata alle informazioni aggiuntive per l'iscrizione, pena la mancata approvazione della richiesta di iscrizione.