Giovanni Agosta - Research & Teaching teaching:info3 http://home.deib.polimi.it/agosta/ 2020-03-26T11:47:52+01:00 Giovanni Agosta - Research & Teaching http://home.deib.polimi.it/agosta/ http://home.deib.polimi.it/agosta/lib/images/favicon.ico text/html 2007-11-16T10:36:01+01:00 teaching:info3:alberi_binari http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:alberi_binari&rev=1195205761 Nella lezione del 14/11, abbiamo visto gli alberi binari, con due possibili implementazioni: * Con strutture collegate da puntatori * Come array, per alberi completi Abbiamo inoltre introdotto le proprieta' di fullness e completeness, e i teoremi relativi che permettono di misurare l'occupazione in memoria di un albero binario. text/html 2008-11-26T15:35:51+01:00 teaching:info3:algoritmi_di_ordinamento http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:algoritmi_di_ordinamento&rev=1227710151 Nella lezione del 26/11, abbiamo visto i principali algoritmi di ordinamento: * Bubblesort * Insertion sort * Selection sort * Mergesort * wp>Quicksort * Binsort * Radix sort Vedremo che alcuni altri algoritmi di ordinamento possono essere realizzati usando strutture d'appoggio basate su alberi, in particolare lo wp>Heapsort. text/html 2008-12-16T12:33:17+01:00 teaching:info3:b-tree http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:b-tree&rev=1229427197 Nella lezione del 3/12 abbiamo introdotto i B-Tree. Implementazione dei B-Tree in Python class InvalidBTreeException(Exception): pass class NonFullSplitException(Exception): pass class BTree(object): def __init__(self,parent,chld,elem,degree=2,isLeaf=True): '''Default: 2-3-4 Tree''' self.isLeaf=isLeaf self.children=chld self.keys=elem self.minkeys=degree-1 self.maxkeys=2*degree-1 self.parent=parent if parent and (len(self.keys)>self.maxkeys or len(self.keys)<self.minkeys… text/html 2008-12-03T15:26:04+01:00 teaching:info3:binary_search_tree_e_heap http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:binary_search_tree_e_heap&rev=1228314364 Nella lezione del 3/12, abbiamo visto i BST, mentre in quella di lunedi' vedremo l'Heap. A partire da queste strutture dati, potremo costruire l'algoritmo di ordinamento noto come wp>Heapsort. [Qui] trovate vari esempi di Heap e Heapsort in Python. text/html 2007-09-13T16:50:11+01:00 teaching:info3:blog http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:blog&rev=1189695011 Quest'area è dedicata agli aggiornamenti relativi al corso di Informatica 3. text/html 2008-02-12T18:06:28+01:00 teaching:info3:compito_14_2_2008 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:compito_14_2_2008&rev=1202835988 Il compito del 14/2 avra' inizio alle ore 9:00, e durata pari a 1:45. Quindi, tolti i tempi tecnici di disposizione, distribuzione compiti e ritiro degli stessi, si finira' per le 11. text/html 2008-11-06T08:09:40+01:00 teaching:info3:complessita_computazionale http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:complessita_computazionale&rev=1225955380 Nella lezione del 5/11 abbiamo introdotto il concetto di complessità computazionale. La complessità è relativa ad un algoritmo, espresso come sequenza di passi concreti (ovvero applicazioni elementari di strumenti noti). La complessità temporale dell'algoritmo è data dal numero di passi concreti necessari, in funzione della dimensione degli input: C(n). text/html 2007-12-10T16:31:08+01:00 teaching:info3:complessita_induzione_e_ricorrenze http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:complessita_induzione_e_ricorrenze&rev=1197300668 In questa lezione abbiamo affrontato i principali metodi di risoluzione delle serie e delle equazioni alle ricorrenze che si trovano nell'analisi di complessità degli algoritmi. Oltre alla risoluzione delle serie aritmetiche e geometriche, abbiamo visto tre metodi di risoluzione di impiego generale: text/html 2008-10-20T17:07:02+01:00 teaching:info3:concorrenza_threading http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:concorrenza_threading&rev=1224515222 Concorrenza e Threading In questa lezione abbiamo visto i principi fondamentali della concorrenza, e piu' i particolare il modello di programmazione a thread. Dal punto di vista teorico, abbiamo introdotto i concetti di memoria condivisa e passaggio di messaggi, nonche' alcuni modelli di concorrenza (spazio di tuple, modello ad attori, algebre dei processi). text/html 2010-06-30T09:40:37+01:00 teaching:info3:correzione_compiti_dei_laureandi_29_6 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:correzione_compiti_dei_laureandi_29_6&rev=1277883637 Ho corretto le prove dei laureandi. Nguimdjio, Mandelli, Frigerio e Kenmoe hanno superato l'esame, gli altri no. Potete passare in ufficio domani mattina dalle 10 alle 12 per i voti e la discussione. Nel pomeriggio registro*. G. * Nota importante: per poter registrare i vostri voti prima del 6, dovete iscrivervi all'appello di laurea text/html 2010-09-29T13:21:22+01:00 teaching:info3:da_informatica_3_ad_algoritmi_e_principi_per_l_informatica http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:da_informatica_3_ad_algoritmi_e_principi_per_l_informatica&rev=1285759282 Salve a tutti, come forse saprete, il corso cambia nome e struttura con il passaggio al nuovo ordinamento 270, diventando il modulo 2 del corso integrato di Algoritmi e Principi per l'Informatica. Per gli studenti dell'ordinamento 509, il modulo e' offerto in unione con il vecchio esame di Informatica 3. text/html 2007-10-10T10:31:00+01:00 teaching:info3:eccezioni_e_parallelismo http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:eccezioni_e_parallelismo&rev=1192005060 Nella lezione del 10/10, abbiamo trattato due concetti relativi alla gestione del flusso di controllo di un programma. Le eccezioni sono un meccanismo di controllo del flusso che generalizza le condizioni di errore, permettendo l'uscita dal flusso di controllo base per passare ad un blocco di gestione dell'errore, in modo analogo a quanto accade per la gestione degli interrupt a livello di sistema. Si notino le differenze sintattiche nella gestione delle eccezioni in C++ e Java. text/html 2009-01-12T09:09:51+01:00 teaching:info3:esercitazione_b-tree http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:esercitazione_b-tree&rev=1231747791 Materiale relativo all'esercitazione sui B-Tree: * [Indexing Trees] * [Introduzione ai B-Tree] * [Esercizi sui B-Tree] text/html 2009-01-07T10:06:24+01:00 teaching:info3:esercitazione_saltata http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:esercitazione_saltata&rev=1231319184 Scusate per l'esercitazione saltata di stamattina. Recupereremo almeno un'ora lunedi' prossimo, per la seconda vedremo. G. text/html 2007-12-10T15:42:53+01:00 teaching:info3:grafi http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:grafi&rev=1197297773 Nella prima parte della lezione del 10/12, abbiamo introdotto il concetto di grafo, e alcuni concetti accessori: * Vertice * Lato/arco * Cammino (semplice o meno) * Ciclo (semplice o meno) * Distanza fra vertici * Cammino minimo fra due vertici text/html 2011-02-18T15:23:29+01:00 teaching:info3:hash http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:hash&rev=1298039009 Nella lezione del 17/12 abbiamo visto gli ultimi due argomenti del corso, tabelle di hash e codifica di Huffman. Per quanto riguarda le tabelle di hash, abbiamo visto le principali strutture (chaining e open addressing) e funzioni di hash (resto della divisione e metodo moltiplicativo). text/html 2008-10-08T11:57:46+01:00 teaching:info3:introduzione http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:introduzione&rev=1223459866 Nella prima lezione (1/X/07), abbiamo seguito l'evoluzione dei linguaggi di programmazione, dalle origini (wp>Fortran, wp>COBOL e wp>ALGOL) ai linguaggi moderni (C, wp>C++, Java e Python), accennando anche ai linguaggi non legati al modello di Von Neumann (wp>LISP, wp>Prolog). text/html 2007-11-07T14:37:16+01:00 teaching:info3:iteratori_generatori_e_coroutine http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:iteratori_generatori_e_coroutine&rev=1194442636 Nella lezione del 7/11, abbiamo visto alcuni concetti tipici di Python, ma presenti anche in altri linguaggi di programmazione: * Iteratori * Generatori A partire da questi ultimi, abbiamo costruito un modello di multithreading non-preemptive (i.e., cooperativo) basato sul concetto di coroutine. text/html 2009-10-26T09:07:45+01:00 teaching:info3:liste_pile_e_code http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:liste_pile_e_code&rev=1256544465 Nella lezione del 27/10, abbiamo visto le principali strutture dati basate sul concetto di sequenza: * Liste * Implementazione tramite puntatori (linked list) * Implementazione tramite array * Pile * Code * Basate su liste * Basate su array (in genere code circolari) text/html 2008-10-22T15:28:27+01:00 teaching:info3:mutex_threading http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:mutex_threading&rev=1224682107 Mutua Esclusione e Threading In questa lezione abbiamo visto come l'uso dei thread porti ad aver bisogno di accedere ai dati in modo esclusivo e di sincronizzare i thread. Per questo, abbiamo introdotto eventi, lock e condition variables. Inoltre, abbiamo introdotto i concetti di pila, coda e lista che approfondiremo nelle prossime lezioni. text/html 2007-10-29T16:12:51+01:00 teaching:info3:notazioni_o_ω_e_θ http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:notazioni_o_%CF%89_e_%CE%B8&rev=1193670771 Nella lezione del 29/10 abbiamo concluso la discussione della complessità computazionale, introducendo tre notazioni che caratterizzano le classi di complessità: le notazioni O, Ω e Θ. Data una funzione a valori non negativi f(n), valgono le seguenti proprietà: text/html 2007-10-08T17:17:37+01:00 teaching:info3:passaggio_di_parametri_e_template http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:passaggio_di_parametri_e_template&rev=1191856657 Nella lezione dell'8/10 abbiamo visto la gestione delle chiamate a funzione dal punto di vista del passaggio dei parametri (per valore, per riferimento, per copia e valore ritornato, per nome). Abbiamo inoltre introdotto le principali strutture dati (tipi primitivi, tipi composti) e le strutture dati astratte. Per finire, abbiamo introdotto i template in C++. text/html 2009-10-02T17:22:47+01:00 teaching:info3:problemi_tecnici_per_la_teledidattica http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:problemi_tecnici_per_la_teledidattica&rev=1254496967 Abbiamo un problema con le aule per la teledidattica. Per gli studenti di Milano, questo significa che cambieremo aule ASAP. Per gli studenti di Cremona, invece, la lezione di oggi (introduttiva) sara' recuperata lunedi' nella terza ora (e se necessario nella terza ora del lunedi' successivo). text/html 2007-10-15T16:07:35+01:00 teaching:info3:programmazione_orientata_agli_oggetti http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:programmazione_orientata_agli_oggetti&rev=1192457255 Nella lezione del 15/10 abbiamo affrontato il tema della programmazione orientata agli oggetti. In particolare, abbiamo trattato i temi dell'ereditarietà, del polimorfismo, dell'overriding ed overloading dei metodi. Per finire, abbiamo visto il problema dell'ereditarietà multipla e le relative soluzioni (in Perl, Python, Java e C++). text/html 2008-10-08T12:12:10+01:00 teaching:info3:python http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:python&rev=1223460730 Nella lezione dell'8/10 abbiamo introdotto il linguaggio di programmazione Python. Abbiamo in particolare considerato questi aspetti: * Strutture dati: * Variabili (tipizzazione dinamica forte) * Sequenze: liste, dizionari, stringhe e tuple * Classi e oggetti (inizializzazione, definizione di metodi) text/html 2011-02-21T14:37:02+01:00 teaching:info3:regole_per_i_recuperi_parziali_e_le_medie http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:regole_per_i_recuperi_parziali_e_le_medie&rev=1298295422 Applicheremo le seguenti regole: * E' possibile recuperare una parte singola; nel momento in cui si consegna il nuovo compito si considera annullato il voto precedente; * La media fra I3 e IT prevede arrotondamento all'intero superiore. text/html 2008-10-31T15:16:10+01:00 teaching:info3:rinvio_della_lezione_del_3_11 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:rinvio_della_lezione_del_3_11&rev=1225462570 Salve a tutti, visto che riesco a rientrare a Milano per il 12/11, la lezione del 3/11 e' rinviata al 12. Il calendario del corso e' stato aggiornato di conseguenza. Saluti, G. Lecture of 3/11 moved Hi all, I'll be able to be back in Milan by 12/11, so the lecture of 3/11 is rescheduled to November, 12th. The course calendar has been updated accordingly. text/html 2008-02-19T15:58:30+01:00 teaching:info3:risultati_del_compito_del_14_02_2008 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:risultati_del_compito_del_14_02_2008&rev=1203433110 Ho messo i risultati in bacheca (I-M, all'interno del DEI). Tutti quelli che non compaiono non hanno superato l'esame. Potete passare a vedere il compito venerdi' mattina alle 10. Venerdi' pomeriggio registro. Alcuni errori banali * Molti di voi hanno sbagliato l'esercizio sul BST, usando alberi di tipo diverso. * Gli algoritmi di ordinamento piu' semplici, come quello proposto nel compito, sono tutti O(n2). Alcuni hanno ottenuto complessita' improbabili. * L'ambiente globale non ha un … text/html 2008-10-08T12:05:56+01:00 teaching:info3:semantica_operazionale_delle_chiamate_a_funzione http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:semantica_operazionale_delle_chiamate_a_funzione&rev=1223460356 Nella lezione del 6/X/2008 abbiamo analizzato le strutture di un linguaggio di programmazione, a partire dagli identificatori. Distinguiamo due tipi principali di identificatori, variabili e funzioni (notate però che anche le etichette sono identificatori). In linea di principio, entrambi sono caratterizzati da nome, spazio di visibilità, tipo, indirizzo e valore. Abbiamo anche visto, però, che in molti casi alcuni di questi elementi possono essere assenti, o cambiare durante la vita del prog… text/html 2008-03-12T10:46:08+01:00 teaching:info3:soluzioni_del_compito_del_7_3_2008 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:soluzioni_del_compito_del_7_3_2008&rev=1205315168 Ecco una soluzione semplice del secondo esercizio: def dup(l): l2=[] for i in l : l2.append(i) l2.append(i) return l2 Ci sono altri modi per esprimere lo stesso concetto, ad esempio: def dup(l): return reduce(lambda x,y : x+y, [ [i]*2 for i in l ]) text/html 2008-07-15T16:01:48+01:00 teaching:info3:soluzioni_del_compito_del_9_7_2008 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:soluzioni_del_compito_del_9_7_2008&rev=1216130508 Soluzione per gli esercizi 2, 3 e 5 Esercizio 2 Il testo chiede di determinare l'output del seguente programma Python: def f(x,y): return x+y*2 def g(x,y=[1]): return x>y a=[1,2] b=['a','b'] print g(f(a,b)) print f(b,a) print g(f(a,b),f(b,a)) def h(y): def f(x): return x+y return f f=h(a) print f(b) text/html 2009-02-20T09:01:12+01:00 teaching:info3:soluzioni_dell_appello_del_13_02_2009 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:soluzioni_dell_appello_del_13_02_2009&rev=1235116872 Ecco qui le [soluzioni dell'ultimo appello]. G. text/html 2008-10-07T15:12:16+01:00 teaching:info3:spostamento_di_aula_lunedi http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:spostamento_di_aula_lunedi&rev=1223385136 Lo spostamento dall'aula T.0.1 alla T.2.1 per il lunedi' e' confermato. G. text/html 2011-02-02T11:06:58+01:00 teaching:info3:tema_d_esame_di_esempio http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:tema_d_esame_di_esempio&rev=1296641218 Nota: questo compito non e' ancora del tutto rappresentativo, cercheremo di migliorarlo al piu' presto. Inoltre, ho fatto le soluzioni un po' di fretta -- se c'e' qualcosa che non vi torna ne parliamo a lezione. Esercizio 1: Strutture Dati a) Dato un 2-3-4 Tree vuoto, inserire nell'ordine i seguenti caratteri: a u k b q o g s v i x z text/html 2011-01-24T14:01:40+01:00 teaching:info3:tema_d_esame_di_esempio_2 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:tema_d_esame_di_esempio_2&rev=1295874100 Questo tema e' stato preparato dal prof. Alessandro Campi. Esercizio 1 Si consideri una tabella di hash con 12 posizioni. Si vuole gestirla usando il double hashing h1(n)+i*h2(n) (con n numero da inserire e i numero del tentativo). Dire quale tra queste coppie di funzioni si adotterebbe motivando la risposta text/html 2009-04-06T09:35:02+01:00 teaching:info3:visione_compiti_06_03_2009 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:visione_compiti_06_03_2009&rev=1239003302 Salve a tutti, la visione dei compiti del 06/03/2009 avverra' domani (7/4) alle 9:30 in aula 3B (al terzo piano del dipartimento). GP text/html 2010-07-26T18:19:19+01:00 teaching:info3:visione_compiti_luglio_2010 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:visione_compiti_luglio_2010&rev=1280161159 Chi volesse vedere il compito puo' passare in ufficio domani alle 9:30. G. text/html 2009-02-16T10:59:28+01:00 teaching:info3:voti_13_02_2009 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_13_02_2009&rev=1234778368 Ho finito di correggere i compiti. Sono andati molto male. Voto massimo: 25. Percentuale di promossi: 35%. I voti sono in bacheca al DEI, la visione dei compiti sara' giovedi' 19/2 alle 11:15 in aula PT1. Faro' anche una spiegazione delle soluzioni. text/html 2010-02-11T12:07:07+01:00 teaching:info3:voti_2_2_2010 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_2_2_2010&rev=1265886427 Ho finito di correggere i compiti. A breve i voti sul poliself. Nel frattempo, vi segnalo il seminario del prof. Walid Najjar della University of California at Riverside, dal titolo A Novel Modular Approach to C-to-HDL Compilation for FPGA Accelerators. Si terra' il giorno 12 alle 10:30 in dipartimento. text/html 2008-07-18T10:05:50+01:00 teaching:info3:voti_appello_del_9_7_2008 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_appello_del_9_7_2008&rev=1216368350 Ho pubblicato i voti dell'ultimo appello sul Poliself. Avete tempo fino al 25/7 (mattina) per rifiutare il voto. Potete passare martedi' 22 alle 15 per la visione dei compiti. C'e' un non iscritto (Lippolis) a cui non ho potuto registrare il voto. text/html 2009-04-02T16:37:50+01:00 teaching:info3:voti_dell_appello_del_6_3 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_dell_appello_del_6_3&rev=1238683070 Finalmente ho corretto i compiti :) La media dei voti >=18 e' 22.67. I promossi sono il 45% dei presenti all'appello. Voto massimo: 30 (in tre casi). I voti sono in bacheca (alla lettera I), li mettero' sul poliself nei prossimi giorni. G. text/html 2009-09-06T17:33:25+01:00 teaching:info3:voti_e_soluzioni_del_3_9 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_e_soluzioni_del_3_9&rev=1252251205 Salve a tutti, dovrebbero esservi gia' arrivati i voti dell'ultimo appello. Trattandosi di un tema d'esame piuttosto semplice, i voti sono abbastanza alti. Se non avete passato l'esame, dovreste riconsiderare seriamente la preparazione che avete fatto. text/html 2011-03-16T11:59:18+01:00 teaching:info3:voti_e_visione_compiti_25_2 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_e_visione_compiti_25_2&rev=1300273158 Salve a tutti, ho finito di correggere i compiti. Metto i voti in bacheca lunedi' mattina. Visione compiti sempre lunedi' mattina alle 10:15 in aula PT1 al DEI. G. P.S.: registro i voti di API e di Informatica 3 la prossima settimana. text/html 2010-02-03T16:12:13+01:00 teaching:info3:voti_laureandi_2_2_2010 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_laureandi_2_2_2010&rev=1265209933 Salve a tutti, ho finito di correggere i compiti dei laureandi e gli altri casi speciali (compiti in inglese, studenti UIC). Trovate i voti in bacheca domani. G. text/html 2011-02-18T16:26:26+01:00 teaching:info3:voti_prova_in_itinere_2011 http://home.deib.polimi.it/agosta/doku.php?id=teaching:info3:voti_prova_in_itinere_2011&rev=1298042786 La visione dei compiti si terra' lunedi' alle 12 in Sala Seminari presso il DEI. Matricola VOTO 765003 17 714833 17 729329 25 728995 21 726932 19 729651 25 764024 INS 749478 22 726634 INS 727440 16 726617 24 729952 15 729606 17 728425 22 728005 25 727193 26 728382 21 713947 17 730500 INS 733147 INS 727669 19 729894 30 714463 22 727979 15 727349 INS 664165 INS 729327 INS 728205 15 727252 22 728780 26 727052 19 727523 INS 713799 …