Giovanni Agosta - Research & Teaching teaching:info3
http://home.deib.polimi.it/agosta/
2020-03-26T11:47:52+01:00Giovanni Agosta - Research & Teaching
http://home.deib.polimi.it/agosta/
http://home.deib.polimi.it/agosta/lib/images/favicon.icotext/html2007-11-16T10:36:01+01:00teaching: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/html2008-11-26T15:35:51+01:00teaching: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/html2008-12-16T12:33:17+01:00teaching: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/html2008-12-03T15:26:04+01:00teaching: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/html2007-09-13T16:50:11+01:00teaching: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/html2008-02-12T18:06:28+01:00teaching: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/html2008-11-06T08:09:40+01:00teaching: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/html2007-12-10T16:31:08+01:00teaching: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/html2008-10-20T17:07:02+01:00teaching: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/html2010-06-30T09:40:37+01:00teaching: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 laureatext/html2010-09-29T13:21:22+01:00teaching: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/html2007-10-10T10:31:00+01:00teaching: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/html2009-01-12T09:09:51+01:00teaching: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/html2009-01-07T10:06:24+01:00teaching: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/html2007-12-10T15:42:53+01:00teaching: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 verticitext/html2011-02-18T15:23:29+01:00teaching: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/html2008-10-08T11:57:46+01:00teaching: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/html2007-11-07T14:37:16+01:00teaching: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/html2009-10-26T09:07:45+01:00teaching: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/html2008-10-22T15:28:27+01:00teaching: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/html2007-10-29T16:12:51+01:00teaching: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/html2007-10-08T17:17:37+01:00teaching: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/html2009-10-02T17:22:47+01:00teaching: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/html2007-10-15T16:07:35+01:00teaching: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/html2008-10-08T12:12:10+01:00teaching: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/html2011-02-21T14:37:02+01:00teaching: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/html2008-10-31T15:16:10+01:00teaching: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/html2008-02-19T15:58:30+01:00teaching: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/html2008-10-08T12:05:56+01:00teaching: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/html2008-03-12T10:46:08+01:00teaching: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/html2008-07-15T16:01:48+01:00teaching: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/html2009-02-20T09:01:12+01:00teaching: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/html2008-10-07T15:12:16+01:00teaching: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/html2011-02-02T11:06:58+01:00teaching: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 ztext/html2011-01-24T14:01:40+01:00teaching: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 rispostatext/html2009-04-06T09:35:02+01:00teaching: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).
GPtext/html2010-07-26T18:19:19+01:00teaching: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/html2009-02-16T10:59:28+01:00teaching: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/html2010-02-11T12:07:07+01:00teaching: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/html2008-07-18T10:05:50+01:00teaching: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/html2009-04-02T16:37:50+01:00teaching: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/html2009-09-06T17:33:25+01:00teaching: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/html2011-03-16T11:59:18+01:00teaching: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/html2010-02-03T16:12:13+01:00teaching: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/html2011-02-18T16:26:26+01:00teaching: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 …