Algoritmi e strutture dati T1/2007-2008
Versione del 19 nov 2007 alle 16:18 di Joliet Jake (discussione | contributi) (→Lezione 08/11/2007)
Indice
- 1 AVVISI
- 2 Orari
- 3 Scaglione alfabetico
- 4 Docenti
- 5 Programma
- 6 Orari ricevimento
- 7 Altre informazioni e links
- 8 Siti del corso
- 9 Materiale didattico
- 10 Diario del corso
- 10.1 Lezione 01/10/2007
- 10.2 Lezione 02/10/2007
- 10.3 Laboratorio 02/10/2007
- 10.4 Lezione 04/10/2007
- 10.5 Laboratorio 04/10/2007
- 10.6 Lezione 05/10/2007
- 10.7 Lezione 08/10/2007
- 10.8 Lezione 09/10/2007
- 10.9 Laboratorio 09/10/2007
- 10.10 Lezione 11/10/2007
- 10.11 Laboratorio 11/10/2007
- 10.12 Lezione 12/10/2007
- 10.13 Lezione 15/10/2007
- 10.14 Lezione 16/10/2007
- 10.15 Laboratorio 16/10/2007
- 10.16 Lezione 18/10/2007
- 10.17 Laboratorio 18/10/2007
- 10.18 Lezione 19/10/2007
- 10.19 Lezione 22/10/2007
- 10.20 Lezione 23/10/2007
- 10.21 Laboratorio 23/10/2007
- 10.22 Lezione 25/10/2007
- 10.23 Laboratorio 25/10/2007
- 10.24 Lezione 26/10/2007
- 10.25 Lezione 29/10/2007
- 10.26 Lezione 30/10/2007
- 10.27 Laboratorio 30/10/2007
- 10.28 Lezione 01/11/2007
- 10.29 Lezione 05/11/2007
- 10.30 Lezione 06/11/2007
- 10.31 Lezione 08/11/2007
- 10.32 Laboratorio 08/11/2007
- 10.33 Lezione 09/11/2007
- 10.34 Settimana 12/11/2007->16/11/2007
- 10.35 Lezione 19/11/2007
- 10.36 Lezione 20/11/2007
AVVISI
- La prima lezione di laboratorio sarà martedì 2 ottobre in aula G11 (Settore Didattico, via Celoria)
- La lezione di martedì 2 ottobre non si terrà.
- Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2
- Nuova variazione: il laboratorio di martedì si svolge in aula 309
Orari
- Lezione
- Lunedì, 10:30-12:30, aula V2
- Martedì, 08:30-10:30, aula V2
- Giovedì, 08:30-10:30, aula V2
- Venerdì, 10:30-12:30, aula 405
- Laboratorio
- Martedì, 10:30-12:30, aula 309
- Giovedì, 10:30-12:30, aula V2
Scaglione alfabetico
Il turno è unico.
Docenti
Massimiliano Goldwurm (teoria)
Camillo Fiorentini (laboratorio)
Programma
Orari ricevimento
Altre informazioni e links
Siti del corso
Materiale didattico
- Dispense e testi consigliati
- Esercizi e temi d'esame
- Ultimi temi d'esame (ps,pdf)
Diario del corso
Lezione 01/10/2007
- Definizione di algoritmo
- Definizione di problema
- Tipi di problemi
- di decisione
- di ricerca
- di conteggio
- di ottimizzazione
- Complessità di un algoritmo
- Tipi di difficoltà (problematiche)
- SINTESI
- ANALISI
- CLASSIFICAZIONE
Lezione 02/10/2007
lezione annullata
Laboratorio 02/10/2007
- Presentazione
- Caratteristiche del linguaggio C
- Differenze e somiglianze con JAVA
- C è per la programmazione strutturata, non ad oggetti
- In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA
- C non è cross-latform, va ricompilato per ogni computer
- (...)
- Compilazione: codice sorgente -> pre-processore -> codice sorgente preprocessato -> compilatore -> codice oggetto -> linker -> codice eseguibile
- #INCLUDE
Lezione 04/10/2007
non ho potuto partecipare alla lezione, aggiungete particolari se riuscite
- Macchina RAM
- Istruzioni macchina RAM
- Semantica del linguaggio RAM
- Nozione di stato
- Nozione di transizione fra stati
Laboratorio 04/10/2007
Processo dal file srgente alleseguibile:
- Passaggio 1: pre-processazione
- gcc -E nomefile.c esegue solo la precompilazione
- Direttive al pre-processore
- #DEFINE
- #INCLUDE
- Passaggio 2: compilazione
- gcc -c nomefile.c esegue la precompilazione e la compilazione
- risultato in file codice oggetto binario (xxx.o)
- le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) non sono sostituite dal loro codice, lo fa il linker al passaggio successivo.
- Passaggio 3: linking
- collega i prototipi al loro codice
- Modularità
- gcc x1.o x2.o unisce i due files compilati separatamente
- ci deve essere un solo main in almeno uno dei file uniti assieme
- non ci devono essere più definizioni della stessa funzione
ALTRO:
- gcc -ansi nomefile.c esegue la compilazione secondo lo standard ANSI
- gcc -pedantic nomefile.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato
- gcc -Wall nomefile.c esegue la compilazione con tutti i warning
Lezione 05/10/2007
- Proprietà della computazione
- Criteri di costo
- Uniforme
- Logaritmico
- Esempi
Lezione 08/10/2007
- Criterio uniforme e criterio logaritmico
- Costo delle operazioni della macchina RAM con criterio logaritmico
- Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati
Lezione 09/10/2007
- Notazione asintotica
- Relazioni e loro significato
- asintotico
- O grande
- o piccolo
- Omega grande
- Ordine di grandezza
- Regole generali di confronto
- Rapporti fra relazioni
Laboratorio 09/10/2007
- printf
- scanf
- if..then
- esempi ed esercizi in classe (vedere dispense di laboratorio)
Lezione 11/10/2007
- Ripasso relazioni (o piccola, ...)
- Sommatorie
- le più comuni: geometrica, somme di polinomi
- Primi due metodi per calcolare le somme:
- derivazione
- perturbazione
Laboratorio 11/10/2007
- Variabili
- attributi
- nome
- tipo
- valore
- attributi
- Funzioni
- parametri
- si raccomanda di documentarle
- il return di un valore di tipo errato determina un cast automatico
- Prototipi
- definizione
- Record di attivazione delle funzioni
- contenuti
- variabili locali
- informazioni per poter riprendere il programma chiamante all'istruzione giusta
- allocato nello stack di sistema con procedura LIFO
- PUSH/POP
- contenuti
- Variabili globali
- Criteri di visibilità
- Tempo di vita di una variabile
Lezione 12/10/2007
- Terzo metodo per calcolare le somme:
- integrazione per funzioni decrescenti e crescenti monotone
- vari esempi di applicazione dell'integrazione
- ripresa della Formula di Stirling
Lezione 15/10/2007
non ero presente, aggiungerò gli argomenti appena possibile
Lezione 16/10/2007
- Vettori
- Matrici
- Record
- Tabelle
- esempi
Laboratorio 16/10/2007
- Input/output
- caratteri e loro rappresentazione
- getchar()
- redirezione dello standard input
- end-of-file
- putchar()
- redirezione output
- Esercizi
Lezione 18/10/2007
- Liste (non ero presente, se potete aggiungere particolari ve ne sarei grato)
Laboratorio 18/10/2007
- Espressioni
- semplici
- costanti
- variabili
- composte (espressioni aritmetiche, invocazione metodi)
- semplici
- Puntatori
- assegnamenti fra puntatori (compatibilità di tipo)
- esempi
- Dereferenziazione di un puntatore (operatore *)
Lezione 19/10/2007
- Pile
- Insiemi utili per la definizione
- Operazioni
- IS_EMPTY
- TOP(S)
- POP(S)
- PUSH(S, u)
- Implementazioni delle pile
- Tabella
- Lista concatenata
- Code
- Insiemi utili per la definizione
- Operazioni
- IS_EMPTY
- FRONT(Q)
- DEQUEUE(Q)
- ENQUEUE(Q, u)
- Implementazioni delle code
- Tabella
- Lista concatenata
- Allineamenti ed insiemi
- allineamenti
- permutazione
- disposizione
- semplice
- complessa
- insiemi
- combinazione
- semplice
- complessa
- combinazione
- allineamenti
Lezione 22/10/2007
- Grafi
- non orentati
- orientati
- Implementazioni
- matrice
- coppia di tabelle
- lista concatenata
- definizione di cammino
- definizione di ciclo
- definizione di sottografo
- definizione di grafo connesso
- relazione di connessione
- proprietà: transitiva, riflessiva, generalmente non simmetrica
- relazione di raggiungibilità
Lezione 23/10/2007
- alberi
- albero di copertura
- foresta
- albero con radice
- rappresentazione di albero tramite tabella
- clique
- indipendent set
- padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità
- albero bilanciato
Laboratorio 23/10/2007
- esercizi su puntatori
- esercizi su frazioni e passaggio parametri
Lezione 25/10/2007
- visita di grafi per ampiezza
- esercizi
Laboratorio 25/10/2007
- ripasso tipi di dato
- revisione esercizi del laboratorio precedente
Lezione 26/10/2007
- alberi ordinati
- rappresentazione in memoria
- liste di adiacenza
- 3 vettori
- Tipi di attraversamento
- in preordine
- in postordine
- rappresentazione in memoria
- alberi binari
- alberi binari completi
- rappresentazione in memoria
- 2 vettori
- Tipi di attraversamento
- in preordine
- in postordine
- in ordine simmetrico
Lezione 29/10/2007
ero assente
Lezione 30/10/2007
- ricorsione terminale
- procedura di ricerca binaria
- tempi e spazi (criterio uniforme)
- attraversamento in preordine
- procedura
- versione iterativa
- attraversamento in profondità
- procedura
- versione iterativa
Laboratorio 30/10/2007
- esercizi su equazioni e interi
Lezione 01/11/2007
vacanza
Lezione 05/11/2007
- Mergesort
- ordine di grandezza (tempo e spazio) di Mergesort
Lezione 06/11/2007
non c'ero
Lezione 08/11/2007
non c'ero
Laboratorio 08/11/2007
- aritmetica dei puntatori
- esercizi sugli array
Lezione 09/11/2007
- prodotto di matrici
- algoritmo di strasse
- esercizi vari con calcolo di tempi di cacolo e spazi di memoria
Settimana 12/11/2007->16/11/2007
non ero a Milano
Lezione 19/11/2007
- strutture dati astratte
- dizionari
- dizionari ordinati
- partizioni
- hashing
Lezione 20/11/2007
da svolgersi