Informatica, Primo canale (A-D), anno accademico 2020-2021Docente: Paolo Franciosa
|
Obiettivi | Programma | Materiale didattico |
Orario delle lezioni | Ricevimento studenti | Modalità d'esame |
Diario delle lezioni |
Per commenti e segnalazioni,
contatta il docente all'indirizzo
paoloQUIUNPUNTOfranciosaQUIUNACHIOCCIOLAuniroma1QUIUNPUNTOit
Vengono presentati alcuni algoritmi fondamentali per problemi di ordinamento, ricerca e selezione, alcuni problemi numerici, evidenziandone le caratteristiche di efficienza attraverso l'analisi di complessità asintotica.
Vengono descritti i principali metodi di codifica dell'informazione.
Alla fine del corso lo studente sarà in grado di:
Componenti di un sistema di elaborazione: hardware, software, principali unità periferiche. Interazione con un sistema operativo basato su finestre. Il sistema operativo: funzioni principali, gestione dei processi, gestione della memoria, file system. Concetto di cartella, documento, applicazione/programma.
Rappresentazione dell'informazione: codifica di informazioni numeriche - sistemi di numerazione posizionali, codifica binaria, ottale, esadecimale, conversioni di base. Rappresentazione di numeri interi negativi. Rappresentazione in virgola mobile. Codifica di caratteri.
Concetto di algoritmo. Esempi di algoritmi in linguaggio naturale. Generalità sui linguaggi di programmazione, compilatori.
Programmazione in linguaggio Python: uso dell'interprete interattivo, ambienti di programmazione, preparazione di script in linguaggio Python. Costrutti essenziali del linguaggio: variabili, espressioni. Assegnazioni, metodi di input/output, istruzioni di selezione, ed iterazione. Sequenze, slicing di sequenze. Definizione di funzioni, parametri. Accesso a file e scrittura su file. Consultazione della documentazione Python. Principi di programmazione orientata agli oggetti.
Algoritmi fondamentali: Ricerca sequenziale, ricerca dicotomica su un vettore ordinato. Ordinamento: selection sort, merge sort, quick sort, bubble sort. Algoritmo di Euclide per la ricerca del Massimo Comun Divisore (MCD). Algoritmo per la ricerca del k-esimo elemento. Algoritmi di base su matrici.
Introduzione alla complessità computazionale: concetto di complessità di un algoritmo, notazioni asintotiche. Equazioni di ricorrenza e metodi per la loro soluzione. Complessità computazionale degli algoritmi studiati.
La votazione deriva dalla media dei voti riportati nella prova di programmazione e nella prova scritta, integrata eventualmente dall'esito del colloquio. È necessario riportare la sufficienza sia nella prova di programmazione che nella prova scritta. Il colloquio è richiesto a discrezione del docente.
È possibile sostenere le prove di teoria e di programmazione in appelli diversi. Il risultato di ciascuna delle prove viene mantenuto valido per tutto l'anno accademico (per il 2020-2021, fino all'appello di Gennaio 2022 compreso).
Se uno studente si presenta a un appello per sostenere una prova perde comunque il voto eventualmente conseguito in un appello precedente per la stessa prova, anche se decide di non consegnare l'elaborato.
7 Dicembre 2020 | 9 Dicembre 2020 (lab) | 9 Dicembre 2020 |
14 Dicembre 2020 | 16 Dicembre 2020 (lab) | 16 Dicembre 2020 |
Per commenti e segnalazioni,
contatta il docente all'indirizzo
paoloQUIUNPUNTOfranciosaQUIUNACHIOCCIOLAuniroma1QUIUNPUNTOit
5 Ottobre 2020 | |
---|---|
Argomenti |
|
Materiale | La registrazione della lezione del 5 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: Tw6&jd*0 È proibito qualunque uso non personale del video e non è consentita la diffusione del link a persone estranee ai corsi di laurea del DSS. La registrazione di questa lezione si è interrotta per problemi di alimentazione a pochi minuti dal termine. Non è stato perso materiale rilevante. |
torna all'elenco delle lezioni
7 Ottobre 2020 (lab) | |
---|---|
Argomenti |
Cenni sulla struttura di un file system gerarchico: dischi logici, files, cartelle
Uso della shell Linux (o Terminale in Mac OS, o Prompt dei comandi in Windows) Navigazione nel file system: comando Uso dell'interprete Python 3 in modalità interattiva Operatori aritmetici, espressioni, variabili, assegnazioni Esempi di semplici problemi risolubili in modalità interattiva Funzione |
Materiale |
La registrazione della lezione del 7 Ottobre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: 12^9uU&V Un tutorial per l'installazione di Python3 in ambiente Windows è disponibile su https://www.youtube.com/watch?v=ij1HTDpVTBI (a cura del prof Massimo Lauria) |
Esercizi proposti |
Verificare, utilizzando l'interprete Python 3, qual è il massimo valore Verificare, utilizzando l'interprete Python 3, qual è il massimo valore Sperimentare la differenza tra l'operatore Esprimere 8430 secondi in ore, minuti e secondi. Calcolare quanti secondi sono 3 ore, 5 minuti e 18 secondi Trovare la lunghezza dell'ipotenusa di un triangolo rettangolo i cui cateti misurano rispettivamente 18.6 metri e 15 metri |
torna all'elenco delle lezioni
7 Ottobre 2020 | |
---|---|
Argomenti |
Precedenza tra operatori, valutazione di una espressione: albero sintattico Istruzione di assegnazione, binding nome - valore Regole per la definizione di identificatori, parole riservate La funzione Funzioni di conversione Stringhe, operatori su stringhe Errori sintattici, errori semantici, eccezioni Uso di funzioni matematiche con |
Materiale |
La registrazione della lezione del 7 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: y.v@8!SN |
torna all'elenco delle lezioni
12 Ottobre 2020 | |
---|---|
Argomenti |
Script vs. modalità interattiva, uso dell'ambiente idle3 Funzione Istruzione Espressioni boolean, le costanti Indentazione del codice Operatori logici |
Materiale |
La registrazione della lezione del 12 Ottobre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: Qf*&S3zg |
Listati ed esercizi proposti |
|
torna all'elenco delle lezioni
14 Ottobre 2020 (lab) | |
---|---|
Argomenti |
Invocazione di metodi e uso del valore restituito Generazione di numeri pseudocasuali con Semplici programmi con l'istruzione |
Esercizi proposti | |
Materiale |
La registrazione della lezione del 14 Ottobre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: Yh.nN64+ |
torna all'elenco delle lezioni
14 Ottobre 2020 | |
---|---|
Argomenti |
Istruzione Istruzioni Esempi di programmi con istruzioni condizionali Esempi di programmi con uso di contatori |
Materiale |
La registrazione della lezione del 14 Ottobre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: AUUvPH%0 |
torna all'elenco delle lezioni
19 Ottobre 2020 | |
---|---|
Argomenti |
Chiamata di funzioni. Significato in una espressione.
Funzioni vuote, funzioni che restituiscono valori. Parametri ed argomenti. Funzioni di conversione. Definizione di funzioni con |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 19 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: ^pz3XXp@ |
torna all'elenco delle lezioni
21 Ottobre 2020 (lab) | |
---|---|
Argomenti |
Esercizi sulla definizione di funzioni |
Esercizi proposti | |
Materiale |
La registrazione della lezione del 21 Ottobre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: N^^$UTC3 |
torna all'elenco delle lezioni
21 Ottobre 2020 | |
---|---|
Argomenti |
Stack di attivazione delle funzioni. Variabili locali.
Passaggio dei parametri. Assenza di effetti collaterali su parametri semplici. Passaggio dei parametri con nome, parametri opzionali Esempi di definizione di funzioni. |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 21 Ottobre 2020 non è disponibile a causa di un disguido tecnico |
torna all'elenco delle lezioni
26 Ottobre 2020 | |
---|---|
Argomenti |
L'istruzione di ciclo Esercizi sull'uso di cicli e istruzioni condizionali |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 26 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: QD#h20S? |
torna all'elenco delle lezioni
28 Ottobre 2020 (lab) | |
---|---|
Argomenti |
Esercizi sull'uso di cicli e istruzioni condizionali |
Esercizi proposti | |
Materiale |
La registrazione della lezione del 26 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: +K?P2qSN |
torna all'elenco delle lezioni
28 Ottobre 2020 | |
---|---|
Argomenti |
Istruzioni di assegnazione con modifica Uso di variabili boolean per il controllo di cicli Semplici programmi con cicli Istruzione Esempi di programmi con cicli e istruzioni di selezione |
Listati ed esercizi proposti |
Somme di quadratiScrivere un programma che, dato in input un numero naturale n, stampa tutte le coppie di naturali x, y tali che x^2 + y^2 = z^2, con x, y <= n e z naturale. Per n = 20 le soluzioni dovrebbero essere le seguenti: 3^2 + 4^2 = 5^2 5^2 + 12^2 = 13^2 6^2 + 8^2 = 10^2 8^2 + 15^2 = 17^2 9^2 + 12^2 = 15^2 12^2 + 16^2 = 20^2 Soluzione: cercaTernePitagoriche.py |
Materiale |
La registrazione della lezione del 26 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: M#w^5Kce |
torna all'elenco delle lezioni
2 Novembre 2020 | |
---|---|
Argomenti |
Algoritmo per approssimare uno zero di una funzione continua ricercaZero.py Esempi di programmi con cicli multipli e istruzioni di selezione Introduzione alle stringhe. Indicizzazione, slicing, funzione |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 26 Ottobre 2020 è disponibile a
questo link Zoom Passcode di accesso: R#Jy&N8J |
torna all'elenco delle lezioni
4 Novembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su stringhe, cicli. Istruzione |
Listati ed esercizi proposti | Esercitazione 5 |
Materiale |
La registrazione della lezione del 4 Novembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: j34p$5Ty |
torna all'elenco delle lezioni
(Passcode: )4 Novembre 2020 | |
---|---|
Argomenti |
Eccezioni: l'istruzione Esercizi su cicli, istruzioni condizionali, stringhe Commento della funzione di ricerca binaria ricercaZero.py |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 4 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: 2EqqF..l |
torna all'elenco delle lezioni
9 Novembre 2020 | |
---|---|
Argomenti |
Liste Accesso e modifica di elementi di una lista. Scansione di liste con I metodi Ricerca sequenziale su lista Liste disomogenee. La funzione |
Listati ed esercizi proposti |
Esercizi di base su liste:
Data in input una sequenza di interi che rappresentano frequenze:
Soluzione: frequenze.py |
Materiale |
La registrazione della lezione del 9 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: r8mgQm^+ |
torna all'elenco delle lezioni
11 Novembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su liste. |
Listati ed esercizi proposti | Esercitazione 6 (soluzioni in soluzioni6.zip) |
Materiale |
La registrazione della lezione dell'11 Novembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: Wa%gn^4G |
torna all'elenco delle lezioni
11 Novembre 2020 | |
---|---|
Argomenti |
Operatore Slicing di liste Ricerca binaria su liste ordinate. Complessità della ricerca binaria |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione dell'11 Novembre 2020 (solo la parte sulla ricerca binaria, la parte iniziale della lezione non è stata registrata) è disponibile a
questo link Zoom Passcode di accesso: J++ze4T7 |
torna all'elenco delle lezioni
16 Novembre 2020 | |
---|---|
Argomenti |
Liste di liste per la rappresentazione di matrici. Esercizi su liste di liste:
Introduzione alla ricorsione. Esempio di algoritmo ricorsivo per il calcolo del fattoriale
Esempio di algoritmo iterativo per il calcolo del fattoriale
Il paradigma divide et impera. Somma di una sequenza applicando il paradigma divide et impera
|
Listati proposti |
|
Materiale |
La registrazione della lezione del 16 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: cXUen7R% |
torna all'elenco delle lezioni
18 Novembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su liste. |
Listati ed esercizi proposti | Esercitazione 7 (soluzioni in soluzioni7.zip) |
Materiale |
La registrazione della lezione del 18 Novembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: 8qj9B?bK |
torna all'elenco delle lezioni
18 Novembre 2020 | |
---|---|
Argomenti |
Passaggio di parametri riferimento: il caso delle liste. Esempi di programmi che modificano liste. Funzioni che restituiscono liste. Assegnazione tra riferimenti. L'algoritmo di Euclide per il calcolo del Massimo Comun Divisore: versione ricorsiva
L'algoritmo di Euclide per il calcolo del Massimo Comun Divisore: versione iterativa
Complessità computazionale dell'algoritmo MCD di Euclide |
Riferimenti al testo | Cormen, Leiserson, Rivest oppure dispense a cura del prof. Massimo Lauria |
Listati proposti |
|
Materiale |
La registrazione della lezione del 18 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: CnKglG^8 |
torna all'elenco delle lezioni
19 Novembre 2020 | |
---|---|
Argomenti |
Algoritmo di ordinamento insertion sort insertionSort.py |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 19 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: x^rjEP65 |
Link utili | Animazione di algoritmi di ordinamento https://www.toptal.com/developers/sorting-algorithms |
torna all'elenco delle lezioni
23 Novembre 2020 | |
---|---|
Argomenti |
Esercizi di programmazione su liste bidimensionali |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 23 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: k*G4#c5H |
torna all'elenco delle lezioni
25 Novembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su liste bidimensionali. |
Listati ed esercizi proposti | Esercitazione 8 (soluzioni in soluzioni8.zip) |
Materiale |
La registrazione della lezione del 25 Novembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: #=WrY023 |
torna all'elenco delle lezioni
25 Novembre 2020 | |
---|---|
Argomenti |
Algoritmo di ordinamento a bolle - Bubble Sort (codice Bubble sort semplice) e suoi miglioramenti (codice Bubble sort migliorato) Analisi della prestazioni del bubble sort Esercizio: calcolo dei numeri primi con il crivello di Eratostene |
Link utili |
|
Materiale |
La registrazione della lezione del 25 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: R@p&4N7D |
torna all'elenco delle lezioni
26 Novembre 2020 | |
---|---|
Argomenti |
Introduzione alla complessità computazionale Le notazioni asintotiche O(), Ω(), Θ() Esempi di classi di funzioni Uso delle notazioni asintotiche per esprimere limitazioni superiori e inferiori della complessità di algoritmi Complessità computazionale di semplici algoritmi: insertion sort, bubble sort, ricerca sequenziale e ricerca binaria |
Riferimenti al testo |
dispense del corso, oppure Cormen, Leiserson, Rivest |
Materiale |
La registrazione della lezione del 26 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: Jou50i$Q |
torna all'elenco delle lezioni
30 Novembre 2020 | |
---|---|
Argomenti |
Algoritmo di ordinamento per fusione - Merge Sort (codice merge sort) Analisi della prestazioni del merge sort |
Link utili | Animazione di algoritmi di ordinamento https://www.toptal.com/developers/sorting-algorithms |
Materiale |
La registrazione della lezione del 30 Novembre 2020 è disponibile a
questo link Zoom Passcode di accesso: r4kn8V#5 |
torna all'elenco delle lezioni
2 Dicembre 2020 (laboratorio) | |
---|---|
Argomenti |
Output formattato con il metodo Esercizi su liste e liste bidimensionali. |
Listati ed esercizi proposti | Esercitazione 9 (soluzioni in soluzioni9.zip) |
Materiale |
La registrazione della lezione del 2 Dicembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: !kCC=435 |
torna all'elenco delle lezioni
2 Dicembre 2020 | |
---|---|
Argomenti |
Dimostrazione della complessità minima possibile (lower bound) per il problema dell'ordinamento basato su confronti Algoritmo di ordinamento Quick Sort (codice quick sort) Analisi della prestazioni del quick sort |
Riferimenti al testo |
dispense del corso, oppure Cormen, Leiserson, Rivest |
Link utili | Aminazione di algoritmi di ordinamento https://www.toptal.com/developers/sorting-algorithms |
Materiale |
La registrazione della lezione del 2 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: C?0u#2t2 |
torna all'elenco delle lezioni
3 dicembre 2020 | |
---|---|
Argomenti |
Analisi della complessità computazionale di algoritmi ricorsivi.
Complessità computazionale del quick sort nel caso migliore e nel caso peggiore |
Riferimenti al testo |
dispense del corso, oppure Cormen, Leiserson, Rivest |
Materiale |
La registrazione della lezione del 3 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: #5kdB^+R |
torna all'elenco delle lezioni
7 Dicembre 2020 | |
---|---|
Compilazione questionario OPIS |
Si raccomanda agli studenti di compilare il questionario OPIS
(OPInioni Studenti) per l'insegnamento di Informatica (primo canale). Un vademecum per la compilazione è disponibile a
questo link. |
Argomenti |
Algoritmo per il calcolo del k-esimo elemento: selection.py e sua complessità computazionale Analisi della prestazioni dell'algoritmo per il k-esimo elemento Codifica dell'informazione.
|
Riferimenti al testo |
dispense del corso, oppure Cormen, Leiserson, Rivest |
Materiale |
La registrazione della lezione del 7 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: %$&E8xZH |
torna all'elenco delle lezioni
9 Dicembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su stringhe di caratteri e liste. |
Listati ed esercizi proposti | Esercitazione 10 (soluzioni in soluzioni10.zip) |
Materiale |
La registrazione della lezione del 9 Dicembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: nQ3y9c^3 |
torna all'elenco delle lezioni
9 Dicembre 2020 | |
---|---|
Argomenti |
Codifica dell'informazione:
|
Materiale |
La registrazione della lezione del 9 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: aR5I*pwC |
torna all'elenco delle lezioni
14 Dicembre 2020 | |
---|---|
Argomenti |
Lettura e scrittura di file di testo. Dizionari. |
Listati ed esercizi proposti |
|
Materiale |
La registrazione della lezione del 14 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: B25.Gp09 |
torna all'elenco delle lezioni
16 Dicembre 2020 (laboratorio) | |
---|---|
Argomenti |
Esercizi su file e dizionari. |
Listati ed esercizi proposti | Esercitazione 11 |
Materiale |
La registrazione della lezione del 16 Dicembre 2020 (laboratorio) è disponibile a
questo link Zoom Passcode di accesso: 4mz+!Ps6 |
torna all'elenco delle lezioni
16 Dicembre 2020 | |
---|---|
Argomenti | Esercizi di teoria e di programmazione. Informazioni sulle modalità d'esame. |
Materiale |
La registrazione della lezione del 16 Dicembre 2020 è disponibile a
questo link Zoom Passcode di accesso: d2c@Tb#c |