Qui potete trovare tutte le informazioni riguardo il contenuto delle lezioni, ed il relativo materiale. Tenete d'occhio questa pagina.
Qui potete trovare tutte le informazioni riguardo il contenuto delle lezioni, ed il relativo materiale. Tenete d'occhio questa pagina. Il codice di alcune funzioni viste durante il corso si trova nel file:
che verrà aggiornato durante il corso.
Documenti di testo: testi utilizzati per gli esempi a lezione sono copie
liberamente utilizzabili di libri archiviati dal progetto Gutemberg.
I file sono codificati in formato 'utf-8-sig'
.
- The Adventures of Sherlock Holmes - Arthur Conan Doyle
- Alice in Wonderland - Lewis Carrol
- Frankenstein - Mary Shelley
- Moby Dick - Herman Melville
- Il Principe (Eng) - Nicolo Macchiavelli
- Treasure Island - Robert Louis Stevenson
Basi di dati:
- Registro automobilistico: una base di dati popolata che viene usata
nel manuale SQL del corso.
- (Formato SQLite) può essere aperto direttamente SQLite
- (Comandi SQL) importabile in qualunque gestore di database.
- Chinook: una base di dati popolata con informazioni relative ad un
negozio musicale, e rilasciata da Luis Rocha.
- (Formato SQLite) può essere aperto direttamente SQLite
- (Comandi SQL) importabile in qualunque gestore di database.
Lezione 25 - Ripasso
Facciamo un ripasso generale, rivedendo i contenuti delle lezioni e dei laboratori precedenti. Saranno gli studenti a decidere su quali argomenti ritornare, compatibilmente con le due ore a disposizione.
Laboratorio 9 - Integrare Python e SQL
Vediamo come si possano interrogare basi di dati (in questo caso SQLite) utilizzando Python.
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab09.py
in maniera tale che il lo script test_lab09.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab09.py
- scaricare il file
test_lab09.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab09.py
File di test: test_lab09.py
Lezione 24 - SQL. Elementi più avanzati
In questa lezione vediamo come eseguire query SQL che calcolano funzioni sulle colonne della tabella: i cosiddetti operatori aggregati (o funzioni di gruppo). Concludiamo poi le lezioni su SQL con una descrizione sommaria di quelle caratteristiche di SQL che non faremo in tempo a vedere.
Letture: Sezioni 4.5, 4.6, 4.7 e Capitolo 7 del manuale SQL.
Lezione di recupero
La lezione si svolge per recuperare le ore perse durante il semestre. Visto che la lezione è stata calendarizzata fuori dall'orario canonico non faremo cose nuove ma rivedremo il materiale delle precedenti lezioni e chiariremo eventuali dubbi.
Orario: 14:00–16:00, Aula 15 - CU 035
Lezione 23 - Query SQL. Combinare più tabelle
Vediamo come costruire query SQL che combinano i dati di più tabelle. In particolare come utilizzare il prodotto cartesiano e i vari tipi di operatori JOIN. Contestualmente vedremo l'uso di foreign key per impostare vincoli di integrità referenziale.
Letture: Capitoli 5 e 6 del Manuale di SQL.
Laboratorio 8 - SQLite
Lezione 22 - Query SQL su singole tabelle
Prima spieghiamo come è strutturata una tabella e come specificare vincoli su di essa. Poi vediamo come effettuare query SQL che riguardino una singola tabella, in particolare le espressioni che possono essere utilizzate nella clausola where e l'uso di order by.
Letture: Sezioni 4.1, 4.2, 4.3, 4.8 del Manuale di SQL.
Lezione 21 - Introduzione alle basi di dati
Introduciamo il concetto di sistema informativo e di base di dati. Facciamo una breve panoramica sui metodi e sulle fasi di progettazione di una base di dati, e sulle problematiche da affrontare. Introduciamo poi il modello relazionale. e parliamo dei criteri di integrità e di qualità di uno schema relazionale, basati sulle dipendenze funzionali e sulle forme normali. Discutiamo brevemente le operazioni di manipolazioni delle tabelle e di incrocio dei dati.
Letture: Capitoli 1, 2 e 3 del Manuale SQL.
Laboratorio 7 - Elaborazione di stringhe
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab07.py
in maniera tale che il lo script test_lab07.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab07.py
- scaricare il file
test_lab07.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab07.py
File di test: test_lab07.py
Lezione 20 - Ricerca in documenti di testo
Vediamo come utilizzare le operazioni su stringhe e file per calcolare statistiche su file di testo. In particolare costruiremo una funzione che dati alcuni file, li classifica in base alla frequenza con cui delle chiavi di ricerca occorrono al loro interno.
Letture: Capitolo 11 del libro di testo.
Lezione 19 - Uso di file e dati
Laboratorio 6 - Dizionari e Tabelle di Dati
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab06.py
in maniera tale che il lo script test_lab06.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab06.py
- scaricare il file
test_lab06.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab06.py
File di test: test_lab06.py
Letture:
- Cap 9.1 del libro di python.
- nota bene la nostra codifica per le tabelle è diversa da quella del Cap 9.3.
Lezione 18 - Ordinamenti a cascata e Radix sort
Continuiamo con algoritmi di ordinamento che funzionano in tempo lineare. Introduciamo il radix sort, come sequenza di counting sort.
(appunti)
Lezione 17 - Equazioni di ricorrenza / Counting sort
Discutiamo più in generale come risolvere equazioni di ricorrenza, e accenniamo al Master Theorem. Poi discutiamo il couting sort, un algoritmo di ordinamento che funziona in tempo lineare.
(appunti)
Laboratorio 5 - Grafici di tempi di esecuzione
Lezione 16 - Mergesort (cont.) e equazioni di ricorrenza
Terminiamo la spiegazione di Mergesort, ed in particolare della funzione che fonde due sequenze ordinate. Per analizzare il Mergesort facciamo ricorso alle equazioni di ricorrenza.
(appunti)
Lezione 15 - Struttura a pile e Mergesort
Oggi vediamo il Mergesort, un algoritmo di ordinamento per ``per confronto'' che raggiunge l'efficienza asintotica ottimale. Prima però discutiamo un po' della struttura dati di pila (o stack).
(appunti)
Questionario: bit.ly/INFO2018-15
Laboratorio 4 - Esercitazione
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab04.py
in maniera tale che il lo script test_lab04.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab04.py
- scaricare il file
test_lab04.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab04.py
File di test: test_lab04.py
Lezione 14 - Bubblesort e ordinamenti per confronti
Lezione 13 - Ordinamenti e crescita della complessità
Introduciamo il concetto di complessità di un algoritmo. Per farlo discutiamo due semplici algoritmi di ordinamento, e poi introduciamo la notazione asintotica.
(appunti)
Lezione 12 - Efficienza computazionale
Introduciamo un paio di esempi di ricerca binaria, per illustrare l'enorme differenza di prestazioni tra ricerca lineare e binaria. Questo ci fornisce la scusa per cominciare a discutere di efficienza computazionale.
(appunti)
Lezione 11 - Soluzione degli esercizi del laboratorio 3
La lezione consisterà nella risoluzione degli esercizi del laboratorio 3. Poiché il laboratorio deve essere fatto con la classe divisa in due, usiamo una delle lezioni di teoria (a classe riunita) per mostrare la soluzione.
File di test: test_lab03.py
Laboratorio 3 - Esercitazione
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab03.py
in maniera tale che il lo script test_lab03.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab03.py
- scaricare il file
test_lab03.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab03.py
File di test: test_lab03.py
for
su intervalli e cicli while
Lezione 10 - Cicli
Lezione 9 - Iterazioni su sequenze
Abbiamo visto una serie di ulteriori operazioni per manipolare
le sequenze. Abbiamo introdotto le iterazioni su sequenze, e più
esplicitamente il ciclo for
.
Questionario: bit.ly/INFO2018-09a
Letture: Cap 7.1, 7.3, 8.4, 8.5. Libro di Python.
Laboratorio 2 - Esercizi in laboratorio
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab02.py
in maniera tale che il lo script test_lab02.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab02.py
- scaricare il file
test_lab02.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab02.py
File di test: test_lab02.py
Lezione 8 - Gestione degli Errori e Sequenze di dati
Lezione 7 - Strutturare il codice
Abbiamo discusso alcuni elementi del linguaggio python come il
valore None
, la struttura del codice all'interno di un file
(indentazione) e quella in file multipli (i moduli). Abbiamo visto
come le precedenze degli operatori vadano a infuenzare e definire la
valutazione di espressioni.
Questionario: bit.ly/INFO2018-07a
Letture: Cap 4 e Par 5.5. Libro di python
Laboratorio 1 - Esercizi e test
Dovrete scrivere una serie di funzioni in python, e salvarle sul
file lab01.py
in maniera tale che il lo script test_lab01.py
esegua con successo. Più precisamente dovrete:
- salvare le vostre funzioni in un file
lab01.py
- scaricare il file
test_lab01.py
- eseguire, nella stessa cartella che li contiene
$ python3 test_lab01.py
File di test: test_lab01.py
Lezione 6 - Esecuzione condizionale ed espressioni logiche
Abbiamo introdotto i costrutti if
, elif
, else
per l'esecuzione
condizionale di codice. Contestualmente abbiamo visto le espressioni
e gli operatori che operano of producono valori booleani.
Per completare la trattazione abbiamo discusso elementi di
logica booleana.
Questionario: bit.ly/INFO2018-06a
Letture: Cap 5. Libro di python
Lezione 5 - Elementi del linguaggio python
Lezione 4 - Tutorial del terminale
Abbiamo visto come muoverci tra i file del computer usando i comandi del terminale. Contestualmente abbiamo cercato di far girare il nostro primo esempio di codice python dalle slide della lezione scorsa.
Tutorial (file rivisitato della Lezione 1): (schermo|stampa)
Questionario: bit.ly/INFO2018-04a
Lezione 3 - Programmi
Abbiamo descritto a grandi linee come opera una CPU nel modello di von Neumann. Abbiamo quindi visto come sia importante avere linguaggi di alto livello. Questi permattono "astrazioni" più potenti. L'astrazione è un concetto che abbiamo definito contestualmente. Abbiamo descritto la differenza tra linguaggi compilati e interpretati, così come tra linguaggi di alto e basso livello. Abbiamo introdotto brevemente Python e SQL, e detto cosa sono variabili e funzioni in contesto di Python.
Questionari:
- Rappresentazione dei dati: bit.ly/INFO2018-02d
- Programmazione e Astrazione http://bit.ly/INFO2018-03a
Lezione 2 - Dati e programmi
Abbiamo accennato ad alcuni elementi della storia dei calcolatori, da Babbage a Turing passando per von Neumann. Dopodiché la lezione si è concentrata prima sulla codifica di dati, ovvero di come vengano codificati numeri interi in binario e esadecimale, e testi in ASCII, ASCII esteso, e UTF-8. Sono stati fatti anche esempi riguardanti la codifica di immagini e segnali.
Questionari:
- Feedback logistico bit.ly/INFO2018-02a
- Storia e architettura dei calcolatori: bit.ly/INFO2018-02c
Letture: Cap 1. Libro di python
Lezione 1 - Introduzione
Abbiamo introdotto il corso, fornendo le informazioni logistiche di base. Poi abbiamo visto come effettuare i primi passi nell'ambiente linux del laboratorio: come trovare i programmi necessari allo svolgimento delle esercitazioni e come utilizzare il terminale.
Questionario: bit.ly/INFO2018-01
Letture: Cap 1. Libro di python