L'appello scritto straordinario di novembre avrà luogo giovedì 14 in aula I NEC alle ore 10. La prenotazione su Infostud è obbligatoria.
Blog e sito Web del corso di Metodologie di Programmazione (Corso di Laurea in Informatica, canale M-Z)
martedì 12 novembre 2013
sabato 5 ottobre 2013
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!!!
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)
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).
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 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.
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.
martedì 14 maggio 2013
venerdì 10 maggio 2013
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.
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.
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)!
Presentazione dei progetti. E' stato creato un nuovo gruppo per la discussione dei Sapienza Games (SaGa)!
mercoledì 24 aprile 2013
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
venerdì 12 aprile 2013
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
giovedì 28 marzo 2013
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!
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!").
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!").
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.
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.
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 sì, 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.
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.
Iscriviti a:
Post (Atom)