Corso di laurea

informatica

Università degli Studi di Palermo · 30 materie · 0 file condivisi

Il corso di Laurea in Informatica intende fornire allo studente le conoscenze dei metodi e delle tecniche per lo sviluppo dei sistemi e delle applicazioni informatiche, nonché la cultura di base necessaria ad un laureato per poter rapidamente acquisire nuovi strumenti concettuali e tecnici in un'area in continua evoluzione. Il laureato sarà in grado di concorrere alle attività di pianificazione, progettazione, sviluppo, direzione lavori, stima, collaudo e gestione di impianti e sistemi per la generazione, la trasmissione e l'elaborazione delle informazioni, con l'uso di metodologie standardizzate.

Il Corso di Laurea offre competenze adeguate sia alla continuazione degli studi in Lauree Magistrali nell'ambito dell' Informatica e delle Tecnologie dell'Informazione, sia all'ingresso nel mondo del lavoro.

Il Corso di Studi è certificato dall'associazione nazionale dei professori e ricercatori universitari di informatica, la quale ne ha riconosciuto la coerenza dei contenuti rispetto all'offerta nazionale dei corsi di laurea in informatica (bollino GRIN).





Corso di Laurea in Informatica - home page

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

ANALISI MATEMATICA I 1° anno · 6 CFU · MATH-03/A · 0 file
Archivio Globale

Questo corso mira a fare acquisire allo studente i concetti fondamentali dell'Analisi Matematica per funzioni di una variabile reale. In particolare limiti, continuità, derivate ed integrali. Il corso incoraggia lo…

Scheda dell'insegnamento

Obiettivi formativi

Questo corso mira a fare acquisire allo studente i concetti fondamentali
dell'Analisi Matematica per funzioni di una variabile
reale. In particolare limiti, continuità, derivate ed integrali. Il corso incoraggia lo
studente a sviluppare abilità e fare
affidamento nell'uso dei metodi matematici per la risoluzione di problemi.

Programma

4 Insiemi numerici. Potenze e radicali. Esponenziali e logaritmi. Numeri complessi. Radici
complesse. Equazioni algebriche e teorema fondamentale dell'algebra. Esponenziale e logaritmo
complessi.
4 Successioni numeriche.
6 Funzioni reali di una variabile reale. Limiti, continuità ed asintoti. Funzioni elementari. Funzioni
composte ed inverse. Funzioni continue. Funzioni continue su un intervallo chiuso e limitato
(teoremi degli zeri, di Weierstrass e dei valori intermedi). Calcolo dei limiti (proprietà
fondamentali, limiti notevoli e stime asintotiche).
4 Calcolo differenziale: definizione di derivata, derivate di funzioni elementari, continuità e
derivabilità, regole di derivazione, derivate di ordine superiore.
Ricerca di massimi e minimi: teoremi di Fermat, di Rolle, di Lagrange.
6 Conseguenze del teorema di Lagrange. Studio del grafico di una funzione. Differenziale e
approssimazione lineare. Formula di Taylor e Mac-Laurin.
4 Calcolo integrale per funzioni di una variabile reale: somme di Cauchy-Riemann e integrale
definito, primitive ed integrali indefiniti, integrali immediati e quasi immediati. Funzione integrale.
Teorema fondamentale del calcolo integrale.
4 Tecniche di integrazione. Integrazione delle funzioni razionali.

6 Esercizi e complementi su numeri complessi e successioni numeriche.
6 Esercizi e complementi su funzioni e calcolo differenziale per funzioni di una variabile.
6 Esercizi e complementi su polinomi di Taylor e studio del grafico di una funzione.
6 Esercizi e complementi su calcolo di integrali.

Modalità d'esame

ESAME:
L'esame finale consiste in una prova scritta e una prova orale. La prova
scritta e la prova orale sono valutate in trentesimi, ciascuna prova si riterrà
superata con una valutazione non inferiore a 18, ed il voto finale sarà la media
dei voti conseguiti in ciascuna prova. La prova scritta (durata 2 ore) richiede la
risoluzione di 4 esercizi e 2 quesiti riguardanti i principali argomenti trattati
durante il corso.
La prova scritta ha lo scopo di valutare la capacità di calcolo, il
grado di conoscenza dei concetti presentati durante il corso e la capacità degli
studenti di applicare le conoscenze in modo autonomo. La prova orale consiste
nella discussione degli argomenti della prova scritta e in un colloquio
riguardante le definizioni e i risultati principali. La prova orale permetterà
anche di valutare il possesso delle competenze linguistiche e di ragionamento.
PROVA IN ITINERE (scritta):
A metà corso, nel periodo previsto dal calendario didattico, è
facoltà degli studenti sostenere una prova scritta riguardante gli argomenti della
prima parte del corso.
La prova (durata 1 ora ) richiede la risoluzione di 2 esercizi e 1 quesito,
riguardanti i principali argomenti trattati nella prima parte del corso. La prova,
valutata su complessivi
15 punti, si riterrà superata con una valutazione non inferiore a 9. Gli allievi che
superano la prova in itinere, alla conclusione del corso e durante la prova
scritta dell'esame ordinario, dovranno svolgere solo 2 esercizi e 1 quesito
sugli argomenti della seconda parte del corso (durata 1 ora), anche in questo
caso la prova
si valuterà su 15 punti e si riterrà superata con una valutazione non inferiore a
9. La votazione della prova scritta sarà data dalla somma dei voti riportati nelle
due prove scritte, così da risultare espressa in trentesimi. La prova orale e la
valutazione finale saranno come nel caso dell'esame ordinario.
VALUTAZIONE:
La valutazione finale, espressa in voti, sarà effettuata sulla base dei seguenti
criteri:

  • Eccellente 30-30L. Conoscenza approfondita e ampia degli argomenti, ottima
    proprietà di linguaggio; ottima capacità di applicare con rigore e piena
    autonomia le conoscenze per risolvere i problemi proposti.
  • Molto buono 26-29. Conoscenza approfondita degli argomenti, possesso di
    una piena proprietà di linguaggio; più che buona la capacità di applicare in
    autonomia le conoscenze per risolvere i problemi proposti.
  • Buono 22-25. Buona conoscenza dei temi principali e adeguata proprietà di
    linguaggio; buona capacità di applicare le conoscenze per risolvere gli esercizi
    proposti.
  • Sufficiente 18-21. Conoscenza di base degli argomenti principali e sufficiente
    proprietà di linguaggio; sufficiente capacità di risolvere esercizi di base.
    Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
    compensativi e le misure dispensative individuate, dal CeNDis - Centro di
    Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
    attuazione della normativa vigente.

Testi di riferimento

M. Bramanti - C.D. Pagani - S. Salsa, Matematica. Calcolo infinitesimale e
algebra lineare.
Zanichelli, volume unico, 2004. ISBN: 9788808075475 (consigliata qualunque
edizione / any edition)

Codice insegnamento P486703203

ARCHITETTURE DEGLI ELABORATORI 1° anno · 9 CFU · INFO-01/A · 0 file

Il corso mira a fornire la conoscenza dei fondamenti scientifici e tecnologici delle architetture dei sistemi di elaborazione, e le conoscenze e le abilità di base necessarie al progetto e alla programmazione degli…

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira a fornire la conoscenza dei fondamenti scientifici e tecnologici delle
architetture dei sistemi di elaborazione, e le conoscenze e le abilità di base
necessarie al progetto e alla programmazione degli elementi costruttivi degli
elaboratori:

  • I fondamenti della progettazione dei circuiti digitali;
  • La conoscenza dell'organizzazione dell'architettura dei sistemi di elaborazione;
  • La capacità di sviluppare componenti a diversi livelli dell'architettura dei sistemi
    di elaborazione;
  • La conoscenza dei linguaggi di descrizione hardware e la capacità di saper
    utilizzare gli strumenti di simulazione;
  • La conoscenza delle tecniche e degli strumenti di analisi e sviluppo per la
    programmazione a basso livello;
  • La capacità di interfacciare e trasporre codice di alto livello in C con codice
    assembly e viceversa.

Programma

1 Livelli di astrazione e gestione della complessita' nei sistemi digitali e nell'architettura dei calcolatori.
2 Rappresentazione e codifica binaria dei numeri interi.
2 Richiami alla programmazione in C, implementazione di funzioni in C per la manipolazione di interi in formato
binario.
2 Porte logiche, livelli logici e margini di rumore, transistor CMOS, consumo di potenza.
4 Reti logiche combinatorie, algebra booleana, semplificazione di equazioni booleane, forme canoniche,
convenzioni per la rappresentazione di circuiti digitali, blocchi costruttivi combinatori: multiplexer e decoder,
temporizzazione di circuiti combinatorici.
4 Reti logiche sequenziali, latch e flip-flop, macchine a stati finiti, temporizzazione di circuiti sequenziali,
metastabilità e sincronizzazione, parallelismo spaziale e temporale.
4 Progettazione e implementazione di macchine a stati finiti di Moore e Mealy.
3 Ulteriori blocchi costruttivi digitali: circuiti aritmetici, ALU e flag di stato, contatori e registri a scorrimento.
5 Utilizzo di Deeds-DcS (Digital Electronics Education and Design Suite - Digital Circuit Simulator) per la
progettazione e simulazione di semplici reti logiche combinatorie e sequenziali, e dei principali blocchi
costruttivi digitali.
3 Rappresentazione dei numeri in virgola fissa e mobile, il formato IEEE 754.
3 Componenti di memoria: memorie statiche e dinamiche ad accesso casuale, memorie di sola lettura, FGMOS,
memorie flash, reti logiche tramite componenti di memoria; matrici logiche: PLA e FPGA.
6 Linguaggi di descrizione hardware: simulazione e sintesi, modellazione comportamentale e strutturale; utilizzo
del VHDL per descrivere e simulare tramite il simulatore GHDL reti logiche combinatorie e sequenziali, i
principali blocchi costruttivi digitali e i componenti di memoria.
4 L'architettura ARM: il set di istruzioni ARM e la sua codifica; struttura di un programma in memoria: le fasi della
generazione di un codice eseguibile, il formato dei file eseguibili e dei file oggetto, vulnerabilità dello stack e
buffer overflow.
8 Sviluppo di programmi in ARM assembly tramite lo GNU ASsembler (GAS): trasposizione in ARM assembly
dei principali costrutti di programmazione e delle principali strutture dati in C, convenzioni per la chiamata a
funzione.
4 Approfondimenti sull'architettura ARM: integrazione e interfacciamento tra codice C e ARM assembly, semplici
ottimizzazioni del codice in ARM assembly, trasposizione di codice C in ARM assembly.
8 La microarchitettura ARM: progettazione e analisi delle prestazioni di processori a singolo ciclo, multiciclo e
pipeline; componenti hardware, percorso dati e unità di controllo; fasi dell'elaborazione delle istruzioni;
gestione delle dipendenze nei processori multiciclo.
6 Microarchitetture avanzate: pipeline lunghe, micro-operazioni, previsione dei salti, processori superscalari e
out-of-order, ridenominazione dei registri, multithreading e multiprocessori, istruzioni SIMD.
3 Sistemi di memoria: implementazione e gestione della cache e della memoria virtuale.

Modalità d'esame

L'esame consisterà di una prova scritta seguita da una orale. La prova scritta
verterà sugli argomenti trattati nel corso, e conterrà quesiti di tipo teorico e brevi
esercizi di tipo applicativo, posti in forma di domande a risposta aperta o
multipla. La durata prevista della prova è di tre ore. Gli studenti che risulteranno
dalla prova scritta aver raggiunto un livello di conoscenza sufficiente della
materia saranno ammessi a sostenere l'esame finale orale. La prova orale sarà
volta a valutare eventuali lacune da parte dello studente emerse dalla prova
scritta, così come la conoscenza di argomenti non presenti in quest'ultima.
Durante la prova orale verrà inoltre verificata la capacità dello studente di
utilizzo pratico degli strumenti di sviluppo presentati durante il corso.
Il giudizio finale verrà formulato in accordo ai seguenti criteri, tenendo conto del
livello delle conoscenze acquisito e delle capacità di applicare tali conoscenze:

  • Eccellente (28-30 / 30L): ottima conoscenza e comprensione degli argomenti
    trattati, padronanza della terminologia appropriata, capacità di applicare
    efficacemente in maniera autonoma le conoscenze acquisite;
  • Buono (23-27): buona conoscenza e comprensione degli argomenti trattati,
    uso corretto della terminologia, capacità di applicare le conoscenze acquisite in
    maniera corretta;
  • Sufficiente (18-22): conoscenza e comprensione basilare degli argomenti
    trattati, minime conoscenze della terminologia appropriata, scarse capacità di
    applicare le conoscenze acquisite;
  • Insufficiente: il livello di conoscenza raggiunto della materia non è accettabile.
    Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
    compensativi e le misure dispensative individuate, dal CeNDis - Centro di
    Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
    attuazione della normativa vigente.

Testi di riferimento

Testo principale / Main suggested book:

  • David Money Harris, Sarah L. Harris, "Sistemi digitali e architettura dei
    calcolatori - Progettare con tecnologia ARM", Zanichelli, 2017, ISBN:
    9788808920737
    Ulteriori letture per eventuali approfondimenti individuali in autonomia / Further
    readings for eventual individual, autonomous deepening:
    M. Morris Mano, Charles Kime, Tom Martin, "Reti logiche", 5/Ed., Pearson,
    2019, ISBN: 9788891905819
    G. Donzellini, L. Oneto, D. Ponta, D. Anguita, "Introduzione al Progetto di
    Sistemi Digitali", Seconda edizione, Springer, 2023, ISBN: 9788847040250
    John L. Hennessy, David A. Patterson, “Struttura e progetto dei calcolatori 5/
    Ed.”, Zanichelli, 2022, ISBN: 9788808399854
    Robert G. Plantz, "Introduction to Computer Organization: ARM Assembly
    Language Using the Raspberry Pi", 2021, ebook online gratuito (https://
    bob.cs.sonoma.edu/IntroCompOrg-RPi/intro-co-rpi.html)
    John L. Hennessy, David A. Patterson, "Computer Architecture: A Quantitative
    Approach", 6/Ed, Morgan Kaufmann, 2017, ISBN: 9780128119051
    Francesco Berto, "Logica da zero a Gödel", 7/Ed, Laterza, 2008, ISBN:
    9788842086345

Codice insegnamento P910576100

COMPETENZE LINGUISTICHE IN INGLESE EQUIPARABILI AL LIVELLO B1 1° anno · 6 CFU · 0 file

Apprendimento linguistico secondo CEFR

Scheda dell'insegnamento

Obiettivi formativi

Apprendimento linguistico secondo CEFR

Programma

48 Lezioni
60 Autoapprendimento consigliato su piattaforma
40 Laboratorio linguistico

Modalità d'esame

Test di livello
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Rivolgersi al collaboratore esperto linguistico assegnato al laboratorio e
consultare il sito del CLA
Check the CLA website and the language expert collaborator.

Codice insegnamento 20692

FISICA 1° anno · 9 CFU · PHYS-06/A · 0 file

Il Corso si propone di introdurre gli studenti ai principali concetti della fisica classica. In particolare saranno approfonditi le leggi del moto, i principi di conservazione dell'energia e della quantità di moto, i…

Scheda dell'insegnamento

Obiettivi formativi

Il Corso si propone di introdurre gli studenti ai principali concetti della fisica
classica. In particolare saranno approfonditi le leggi del moto, i principi di
conservazione dell'energia e della quantità di moto, i concetti base della
termodinamica dei gas perfetti, le forze e i potenziali di natura elettica e
magnetica. I circuiti elettrici con componenti concentrati.

Programma

2 Introduzione - Misura e incertezza - Cifre significative - Analisi dimensionale. Unita' di misura e sistema
internazionale di misura.
2 Moto unidimensionale – Sistema di riferimento – Spostamento- Velocita' media e istantanea – Moto con
accelerazione costante.
2 Vettori e scalari – Operazioni sui vettori – Moto in due dimensioni – Moto del proiettile.
2 Moto circolare - Approfondimento quantitativo moti uniformemente accelerati.
2 Leggi di Newton - Legge della gravitazione universale.
1 Tipiche forze osservate nei sistemi meccanici – Tensione – Forze elastiche – Forze di attrito.
2 Approfondimento quantitativo su sistemi con diversi tipi di forze.
2 Prodotto scalare - Lavoro - Energia cinetica.
2 Forza di attrito statica e dinamica
1 Approfondimento quantitativo su lavoro ed energia cinetica.
2 Forze conservative e forze non conservative - Energia potenziale.
2 Energia meccanica e sua conservazione.
1 Approfondimento quantitativo sulla conservazione dell'energia meccanica.
2 Quantità di moto - Conservazione della quantita' di moto - Urti ed impulso.
2 Urti elastici in una dimensione - Urti anelastici- Centro di massa. Legge di Newton per il moto del centro di
massa di un sistema meccanico esteso.
1 Approfondimento quantitativo su conservazione della quantità di moto e urti unidimensionali.
2 Moto armonico – Oscillazioni - Pendolo semplice.
2 Temperatura e termometri - Equilibrio termico e principio zero della termodinamica - Variabili macroscopiche di
un gas e temperatura assoluta - Legge dei gas perfetti.
2 Calore come trasferimento di energia - Calore specifico - Calore latente - Dilatazione dei solidi - Lavoro
effettuato o esercitato su un gas. Primo principio della termodinamica.
1 Approfondimento quantitativo su calorimetria.
2 Descrizione microscopica di un gas perfetto monoatomico - Teoria cinetica - Interpretazione della temperatura
di un gas - Energia interna di un gas perfetto.
1 Trasformazioni termodinamiche: isoterme, isobare, isocore.
2 Trasformazioni termodinamiche quasi statiche e reversibili - Piano PV - Approfondimento quantitativo sulle
trasformazioni isoterme, isobare e isocore.
1 Approfondimento quantitativo sulla trasformazione adiabatica.
2 Macchine termiche – Ciclo di Carnot - Secondo principio della termodinamica.
2 Approfondimento quantitativo sulle macchine termiche.
2 Trasformazioni irreversibili - Entropia - Interpretazione statistica dell'entropia.
1 Approfondimento quantitativo sulla stima della variazione di entropia di un sistema termodinamico.
2 Forza di Coulomb. Campo elettrico. Campo elettrico di una carica puntiforme. Teorema di Gauss. Flusso del
campo generato da una carica elettrica puntiforme. Campo di un piano infinitamente esteso.
2 Carattere conservativo delle forze elettriche. Energia potenziale elettrica e potenziale elettrico. Potenziale
elettrico di una carica puntiforme. Lavoro e potenziale elettrico.
2 Capacità elettrica. Condensatore piano. Condensatore cilindrico. Collegamento di condensatori in serie e in
parallelo. Energia immagazzinata in un condensatore.
2 Corrente elettrica. Legge di Ohm. Modello di Drude della conduzione elettrica. Resistività dei materiali.
Potenza dissipata ed effetto Joule.
2 Corrente elettrica. Legge di Ohm. Resistenze in serie ed in parallelo. Potenza dissipata ed effetto Joule.
2 Forza elettromotrice, leggi di Kirchoff. Resistenze in serie ed in parallelo. Carica e scarica del Condensatore.
Circuiti RC.
2 I fenomeni magnetici. Il campo magnetico. La forza di Lorentz. Prodotto vettoriale. Forza magnetica su un
conduttore percorso da corrente. Momento agente su una spira percorsa da corrente.
2 Legge di Biot-Savart. Forza magnetica tra due conduttori paralleli. Teorema di Ampere. Campo di un filo
infinitamente lungo percorso da corrente.
2 Campo di un filo infinitamente lungo percorso da corrente. Campo magnetico di un toroide. Campo magnetico
di un solenoide.
2 Flusso del campo magnetico. La Legge di Faraday. Forza elettromotrice indotta. La Legge di Lenz.
2 L'induttanza. Calcolo della induttanza per un solenoide. Circuito RL. Densità di energia del campo magnetico.
2 Cenni su circuito RLC serie e circuito LC,

Modalità d'esame

La verifica finale consiste in una prova scritta e in una prova orale. La prova
scritta riguarda la risoluzione, senza ausilio di libri di testo o appunti, di alcuni
problemi che riguardano alcune delle principali leggi della fisica classica.
La prova scritta permette di verificare il grado di conoscenza delle leggi fisiche
oggetto dell’insegnamento. In particolare, si evidenzia la capacita' di analisi di
un fenomeno fisico e della sua sistematizzazione matematica, nonche' la
capacita' di ottenere risultati quantitativi.
La prova orale consiste in un colloquio riguardante l’enunciazione e la
discussione delle leggi fisiche studiate e il loro utilizzo nella risoluzione di
problemi proposti al candidato. Tale prova consente di valutare, oltre alle
conoscenze del candidato e alla sua capacita' di applicarle, anche il possesso di
proprieta' di linguaggio scientifico e di capacita' di esposizione chiara e diretta.
La valutazione finale si otterra' mediando le valutazioni della prova scritta e di
quella orale, tenendo conto anche delle eventuali prove in itinere.
Essa, opportunamente graduata, sara' formulata sulla base delle seguenti
condizioni:
a) Conoscenza solo di base delle leggi fisiche studiate e capacita' limitata di
applicarle autonomamente, sufficiente capacita' di analisi dei fenomeni
presentati e di esposizione delle procedure seguite (voto 18-21);
b) Conoscenza buona delle leggi fisiche studiate e capacita' di applicarle
autonomamente a situazioni analoghe a quelle studiate, discreta capacita' di
analisi dei fenomeni presentati e di esposizione delle procedure seguite (voto
22-25);
c) Conoscenza approfondita delle leggi fisiche studiate e capacita' di applicarle
ad ogni fenomeno fisico proposto, pur con qualche tentennamento, buona
capacita' di analisi dei fenomeni presentati e di esposizione delle procedure
seguite (voto 26-28);
d) Conoscenza approfondita e diffusa delle leggi fisiche studiate e capacita' di
applicarle prontamente e correttamente ad ogni fenomeno fisico proposto,
ottima capacita' di analisi dei fenomeni presentati e ottime capacita'
comunicative (voto 29-30L).
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

R. A. Serway - J.W. Jewett Jr – Fisica per scienze ed Ingegneria - Volume unico
V edizione - ISBN 978-88-7959-8644 EdiSES

Codice insegnamento 08557

GEOMETRIA 1° anno · 6 CFU · MATH-02/B · 0 file
Archivio Globale

L'insegnamento si propone di fornire le conoscenze fondamentali dell'algebra lineare e della geometria euclidea, sviluppando il rigore logico e le capacità di astrazione e formalizzazione proprie della matematica.…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento si propone di fornire le conoscenze fondamentali dell'algebra
lineare e della geometria euclidea, sviluppando il rigore logico e le capacità di
astrazione e formalizzazione proprie della matematica. Particolare attenzione è
rivolta a coniugare l'acquisizione delle tecniche di calcolo con la comprensione
dei concetti e delle strutture matematiche sottostanti.
L'insegnamento fornisce gli strumenti teorici e algoritmici per lo studio di sistemi
lineari, matrici, spazi vettoriali, funzioni lineari e spazi euclidei, nonché all'utilizzo
di tali strumenti nella risoluzione di problemi di geometria del piano e dello
spazio.
L'insegnamento mira inoltre a sviluppare la capacità di utilizzare correttamente il
linguaggio matematico e di applicare in modo autonomo i risultati teorici alla
risoluzione di problemi, fornendo una solida preparazione di base per i
successivi insegnamenti di carattere matematico e informatico.

Programma

8 Sistemi lineari. Matrici. Algoritmo di eliminazione di Gauss–Jordan. Somma di matrici e prodotto di uno scalare
per una matrice. Prodotto tra matrici. Matrici invertibili. Matrici simili. Traccia e determinante. Teorema di Binet.
Sottomatrici, minori e rango di una matrice. Teorema di Rouché–Capelli. Teorema di Cramer. Teorema di
struttura delle soluzioni di un sistema lineare.
1 Prodotto cartesiano tra insiemi. Numeri complessi. Divisione tra polinomi. Teorema del resto. Teorema
fondamentale dell’algebra.
1 Relazioni e relazioni d’equivalenza. Funzioni. Gruppi e campi.
6 Spazi e sottospazi vettoriali. Combinazione lineare di vettori. Dipendenza e indipendenza lineare di vettori.
Generatori e basi di uno spazio vettoriale. Coordinate di un vettore rispetto a una base. Dimensione di uno
spazio vettoriale. Codimensione di un sottospazio. Formula di Grassmann.
6 Funzioni lineari, isomorfismi ed endomorfismi. Teorema di struttura degli spazi vettoriali di dimensione finita.
Spazi isomorfi. Matrice rappresentativa di una funzione lineare. Nucleo e immagine. Teorema del rango.
Matrice del cambio di coordinate. Autovalori, spettro, autovettori, autospazi e polinomio caratteristico.
Diagonalizzabilità di matrici e endomorfismi. Endomorfismi simmetrici e teorema spettrale.
3 Metrica su un insieme. Norma e prodotto scalare su uno spazio vettoriale. Disuguaglianza di Cauchy–Schwarz.
Angolo tra vettori e vettori ortogonali. Basi ortogonali e ortonormali. Proiezione ortogonale di un vettore su un
altro vettore.
3 Riferimenti affini e cartesiani del piano. Equazione parametrica e cartesiana di una retta nel piano. Posizione
reciproca di due rette nel piano. Angoli tra due rette nel piano. Distanza tra due punti, tra punto e retta, tra due
rette nel piano.
4 Riferimenti affini e cartesiani dello spazio. Punti complanari. Equazioni parametriche e cartesiane di un piano e
di una retta nello spazio. Posizione reciproca tra due piani, tra due rette, tra retta e piano nello spazio. Angoli
tra due rette, tra due piani, tra retta e piano nello spazio. Distanza tra due punti, tra punto e retta, tra punto e
piano, tra due piani, tra retta e piano, tra due rette nello spazio.

8 Algoritmo di eliminazione di Gauss–Jordan. Risoluzione di sistemi lineari. Calcolo della matrice inversa e di
una potenza intera di una matrice. Algoritmi per il calcolo del determinante e per il calcolo del rango di una
matrice. Rango di matrici contenenti un parametro. Sistemi lineari contenenti un parametro.
2 Operazioni con i numeri complessi. Divisione tra polinomi. Ricerca di radici razionali di un polinomio.
4 Riconoscere sottospazi vettoriali. Calcolo di combinazioni lineari di vettori. Determinazione di sottoinsiemi
massimali di vettori linearmente indipendenti. Determinazione di generatori, basi e dimensione di uno spazio
vettoriale. Calcolo delle coordinate di un vettore rispetto a una base. Calcolo della codimensione di un
sottospazio. Determinazione di equazioni parametriche e cartesiane per sottospazi di R^n.
4 Calcolo della matrice rappresentativa di una funzione lineare rispetto a una data base nel dominio e nel
codominio. Determinazione di nucleo e immagine di una funzione lineare. Calcolo della matrice del cambio di
coordinate. Calcolo di autovalori, spettro, autovettori, autospazi e polinomio caratteristico di matrici ed
endomorfismi. Diagonalizzazione di matrici e endomorfismi.
1 Calcolo della norma di un vettore e dell’angolo tra due vettori. Proiezione ortogonale di un vettore su un altro
vettore. Ortogonalizzazione di Gram–Schmidt.
2 Determinazione di equazioni parametriche e cartesiane di una retta nel piano. Determinazione della posizione
reciproca di due rette nel piano. Calcolo degli angoli tra due rette nel piano. Calcolo della distanza tra due
punti, tra punto e retta, tra due rette nel piano.
3 Determinazione di equazioni parametriche e cartesiane di un piano e di una retta nello spazio. Determinazione
della posizione reciproca tra due piani, tra due rette, tra retta e piano nello spazio. Calcolo degli angoli tra due
rette, tra due piani, tra retta e piano nello spazio. Calcolo della distanza tra due punti, tra punto e retta, tra
punto e piano, tra due piani, tra retta e piano, tra due rette nello spazio.

Modalità d'esame

È prevista una prova scritta in itinere, da svolgersi durante la pausa didattica del
mese di novembre, relativa agli argomenti svolti fino a quel momento. La prova
in itinere è valida esclusivamente per gli appelli della sessione ordinaria di
gennaio e febbraio e non può essere utilizzata nelle successive sessioni
d'esame. Gli studenti che superano la prova in itinere sostengono, in sede
d'esame, una seconda prova scritta limitata alla restante parte del programma.
Gli studenti che non si avvalgono della prova in itinere, o che non la superano,
sostengono invece una prova scritta sull'intero programma.
La prova scritta, oppure, nel caso degli studenti che hanno superato la prova in
itinere, l'insieme delle due prove scritte, ha carattere selettivo e costituisce
requisito di ammissione alla prova orale. Per essere ammessi alla prova orale è
necessario conseguire la sufficienza nella prova scritta, oppure in entrambe le
prove scritte nel caso della prova in itinere.
Le prove scritte sono finalizzate a verificare la capacità di applicare i metodi e le
tecniche dell'algebra lineare e della geometria euclidea alla risoluzione di
problemi, valutando non solo la correttezza dei risultati, ma anche il rigore delle
argomentazioni, l'uso appropriato del linguaggio matematico e la capacità di
giustificare i procedimenti adottati.
La prova orale è finalizzata ad accertare la comprensione dei concetti teorici, la
padronanza del linguaggio matematico, la capacità di collegare i diversi
argomenti del corso e di applicare i risultati teorici anche attraverso la
discussione di esempi e controesempi. La valutazione finale è espressa in
trentesimi, con eventuale attribuzione della lode, ed è determinata
esclusivamente sulla base dell'esito della prova orale.
Criteri di valutazione.
Ottimo (30–30 e lode)
Lo studente dimostra una conoscenza completa e approfondita degli argomenti
trattati, piena padronanza del linguaggio matematico, elevata capacità
espositiva e autonomia di ragionamento. È in grado di collegare i diversi
argomenti del corso, di applicarli con rigore alla risoluzione di problemi anche
nuovi e di motivare in modo corretto e completo ogni passaggio.
Distinto (26–29)
Lo studente dimostra un'ottima conoscenza degli argomenti trattati, buona
capacità espositiva e piena autonomia nella risoluzione dei problemi. Applica
correttamente i metodi studiati e sa giustificare le procedure utilizzate,
commettendo al più lievi imprecisioni.
Buono (24–25)
Lo studente dimostra una buona conoscenza degli argomenti trattati e
un'adeguata padronanza del linguaggio matematico. È in grado di risolvere
correttamente i problemi proposti e di giustificare, nel complesso, le procedure
adottate.
Discreto (21–23)
Lo studente dimostra una conoscenza discreta degli argomenti fondamentali.
Riesce a risolvere i principali problemi proposti, pur evidenziando alcune
incertezze nei collegamenti tra gli argomenti, nell'autonomia di ragionamento o
nella giustificazione dei procedimenti.
Sufficiente (18–20)
Lo studente possiede una conoscenza essenziale degli argomenti trattati ed è in
grado di risolvere i problemi più semplici, mostrando una limitata autonomia e
una padronanza solo parziale del linguaggio matematico e delle argomentazioni.
Insufficiente (<18)
Lo studente non dimostra di aver acquisito le conoscenze e le competenze
minime previste dal corso e non è in grado di affrontare in modo adeguato i
problemi fondamentali dell'algebra lineare e della geometria euclidea.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

F. J. León Trujillo, P. Mercuri, Algebra Lineare e Geometria Euclidea:
Un'introduzione, ISBN 9798184276700
In alternativa:
E. Schlesinger, Algebra lineare e geometria - seconda edizione, Zanichelli,
ISBN 978-8808520692
G. Vaccaro, A. Carfagna, L. Piccolella, Lezioni di geometria e algebra lineare,
Zanichelli, ISBN 978-8808092151
S. Lang, Algebra lineare, Bollati-Boringhieri, ISBN 978-8833950358

Codice insegnamento P098067949

MATEMATICA DISCRETA 1° anno · 6 CFU · MATH-01/A · 0 file

Discenti al termine del corso dovranno avere una conoscenza teorica e pratica dei seguenti argomenti: Insiemistica Relazioni e Funzioni Logica Matematica Induzione e Ricorsione Combinatoria

Scheda dell'insegnamento

Obiettivi formativi

Discenti al termine del corso dovranno avere una conoscenza teorica e pratica
dei seguenti argomenti:

  • Insiemistica
  • Relazioni e Funzioni
  • Logica Matematica
  • Induzione e Ricorsione
  • Combinatoria

Programma

2 Introduzione al corso, Introduzione al linguaggio Python:

  • Ambiente di Sviluppo
  • Variabili Semplici e Complesse
  • Controllo di Flusso
    9 Insiemistica e Primalità:
  • Proprietà degli Insiemi
  • Operazioni su Insiemi
  • Proprietà dei numeri Intieri
  • Divisibilità, Irriducibilità e Primalità
  • L'algoritmo Euclideo delle Divisioni Successive
  • Identità di Bézout ed Equazioni Diofantee
  • Il Teorema Fondamentale dell'Aritmetica e due sue conseguenze
  • Il Crivello di Eratostene
  • Congruenze e Proprietà
  • Il Piccolo Teorema di Fermat ed il suo Corollario
  • Risoluzione di Congruenze Lineari e loro Sistemi
  • Il Teorema Cinese dei Resti
  • La Funzione di Euler
  • Test di Primalità
  • Fattorizzazione di Intieri
  • Crittografia RSA
    3 Combinatoria:
  • I principi di addizione e di inclusione-esclusione
  • Il principio di moltiplicazione
  • Il principio dei cassetti
  • Permutazioni semplici e con ripetizioni
  • Disposizioni semplici e con ripetizioni
  • Combinazioni semplici e con ripetizioni
    3 Relazioni e Funzioni:
  • Proprietà di una Relazione
  • Relazioni di Equivalenza
  • Relazioni d'Ordine
  • le Funzioni come tipo speciale di Relazioni
  • Esempi applicativi
    3 Grafi e Alberi:
  • Definizioni, Struttura e Nomenclatura
  • Grafi Diretti e Non Diretti
  • Multigrafi
  • Connettività dei Grafi
  • Cammini e Cicli Euleriani
  • Cammini e Cicli Hamiltoniani
  • Esplorazione di un Albero
    6 Logica:
  • Logica delle Proposizioni
  • Logica dei Predicati
    3 Modelli di Calcolo
  • Algoritmi e procedure effettive
  • Il modello URM
  • Problemi e Predicati Decidibili
  • La Goedelizzazione di un programma URM
    3 Induzione e Ricorsione:
  • Successioni
  • Principio di Induzione
  • Ricorsione
  • Formule di Relazione Ricorsiva
  • Calcolo della Formula Chiusa

6 Esercitazioni in linguaggio Python su Insiemistica
6 Esercitazioni in linguaggio Python su Logica delle Proposizioni e dei Predicati
6 Esercitazioni in linguaggio Python su Combinatoria
6 Esercitazioni conclusive, Dry Run

Modalità d'esame

La modalità principale per gli esami di profitto è quella dell'esame frontale
individuale: durante l'esame al candidato possono essere poste domande con
richiesta di risposta in forma orale o scritta sugli argomenti effettivamente svolti
nel corso, o può esser chiesto di realizzare esempi di codice Python, a
discrezione del docente. In funzione della numerosità e dell'andamento del
corso, esso può essere preceduta dalla realizzazione di una prova pratica in
piccoli gruppi, o da un esame scritto. Il fine dell'esame è di accertare la maturità
intellettuale del candidato e la sua preparazione organica nella materia.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.
Conoscenza di Base degli argomenti, capacità appena sufficiente di
applicazione alla modellizazione: 18-21.
Discreta conoscenza degli argomenti, capacità sufficiente di applicazione alla
modellizazione: 22-25.
Buona conoscenza degli argomenti, capacità generale di applicazione alla
modellizazione: 26-28.
Distinta conoscenza degli argomenti, capacità di applicazione alla
modellizazione con contributi personali: 29-30.
Ottima conoscenza degli argomenti con contributi di didattica partecipativa,
capacità di applicazione alla modellizazione con contributi personali, progetti
sviluppati indipendentemente: cum laude.

Testi di riferimento

Il docente curerà una selezione di materiali per lo studio e l'esercitazione,
disponibili in modalità open source. Chi volesse dotarsi di un manuale
tradizionale può scegliere liberamente tra le offerte editoriali, avendo cura che
esse trattino tutti gli argomenti del corso. Per chi preferisce dei testi suggeriti:
A curated selection of open source study and practice materials will be made
available. Those who wish to equip themselves with a traditional textbook are
free to choose from the editorial offerings, taking care that they cover all course
topics. For those who prefer a few suggested textboosk:
G. M. Piacentini Cattaneo “Matematica Discreta ed Applicazioni”. Ed. Zanichelli
ISBN: 9788808068132
Facchini “Algebra e Matematica Discreta”. Ed. Decibel-Zanichelli ISBN:
8808097390
O. D. Byer, D. L. Smeltzer, K. L. Wantz, "Journey into Discrete Mathematics".
Ed. AMS/MAA Textbooks, ISBN 978-1470446963
N. Cutland, "Computability: An Introduction to Recursive Function Theory",
Cambridge Press, 1980. ISBN 978-1139935609

Codice insegnamento P982634005

PROGRAMMAZIONE CON LABORATORIO I 1° anno · 7 CFU · INFO-01/A · 0 file

Il modulo si propone di fornire allo studente gli strumenti teorici e pratici per la progettazione di un programma al computer nei suoi aspetti fondamentali: la rappresentazione dei dati in strutture e la formulazione di…

Scheda dell'insegnamento

Obiettivi formativi

Il modulo si propone di fornire allo studente gli strumenti teorici e pratici per la
progettazione di un programma al computer nei suoi aspetti fondamentali: la
rappresentazione dei dati in strutture e la formulazione di semplici algoritmi che
fanno uso delle fondamentali strutture di controllo, selezione e iterazione. Il
linguaggio di programmazione utilizzato e' il C, per la sua diffusione e per
essere propedeutico rispetto alla maggior parte dei moderni linguaggi di
programmazione. Metà delle ore di lezione frontale previste viene svolto in aula
attrezzata con computer, in maniera che gli studenti possano svolgere
direttamente gli esempi e gli esercizi proposti dal docente. Questa modalita'
didattica consente il trasferimento delle competenze teoriche in esempi pratici di
implementazione.

Programma

4 Introduzione al corso di Programmazione. Architettura di un elaboratore secondo Von Neumann.
Rappresentazione dell'informazione. Rappresentazione in binario di interi, interi relativi, reali, caratteri. Il codice
ASCII. Le stringhe.
4 Cambiamento di base per la rappresentazione degli interi. Definizione di Algoritmo. Esempi di algoritmi. I
diagrammi di flusso, rappresentazione di un algoritmo attraverso un diagramma di flusso. Cenni sulla
complessita' computazionale di un algoritmo.
4 Il linguaggio C. Struttura di un programma in C. Compilazione, linkng, preprocessor. Librerie fondamentali.
Identificatori. Le costanti e le variabili. Dichiarazione e assegnazione. Il tipo intero, float e double. Il tipo char.
Funzioni di input/output base.
4 Gli operatori in C: aritmetici, relazionali, logici, bit a bit. Ordine di priorita' degli operatori. I costrutti di selezione
in C: If, then, else e switch, case. Macro. Compilazione condizionale.
4 I costrutti di iterazione in C. Costrutto "for". I costrutti di iterazione while, do..while. Equivalenza dei costrutti di
iterazione.
4 Array in C. Dichiarazione statica di un array. Stringhe in C come array statici di caratteri.
4 Puntatori. Aritmetica dei puntatori. Dichiarazione dinamica di un array. Stack e Heap. Stringhe in C come array
dinamici di caratteri.
8 Array a piu' dimensioni. Dichiarazione statica e dinamica di un array multidimensionale. Equivalenza tra
strutture multidimensionali e monodimensionali e loro rappresentazione in memoria. Le funzioni in C. La
dichiarazione, la definizione e la chiamata di funzioni. Passaggio dei parametri per valore e per indirizzo.
4 Gestione dei file in C. File binari e testuali. Le funzioni per la lettura e scrittura in un file. Accesso casuale e
sequenziale.

4 Codifica in linguaggio C di primi semplici programmi con i costrutti di selezione. Compilazione e linking con
GCC. Uso del comando make e dei makefile.
4 Implementazione in C di programmi che usano costrutti iterativi.
4 Implementazione in C di programmi per l’inserimento e la visualizzazione di un array statico. Implementazione
in C di programmi per trovare la lunghezza di una stringa, per il confronto tra due stringhe, per la ricerca di una
sotto stringa.
4 Implementazione in C di programmi per l’inserimento e la visualizzazione di un array dinamico.
Implementazione in C di programmi per trovare la lunghezza di una stringa, per il confronto tra due stringe, per
la ricerca di una sotto stringa utilizzando i puntatori a carattere.
6 Implementazione in C di programmi per l’inserimento e la visualizzazione di array statici e dinamici a piu'
dimensioni. Implementazione in C del calcolo del prodotto tra due matrici, sia tramite array statico che
dinamico.

6 Implementazione in linguaggio C degli algoritmi di ordinamento, in particolare Insertion e Selection Sort.
Implementazione in linguaggio C della ricerca di un elemento in array non ordinati e ordinati.
4 Implementazione in linguaggio C di un programma per leggere e scrivere su un file testuale o binario.

Modalità d'esame

L’esame è costituito da una prova scritta, da una prova pratica e da un breve
colloquio orale.
La prova scritta è costituita da 4 domande a risposta multipla e da un esercizio
di programmazione.
A ciascuna risposta delle 4 domande a risposta multipla vengono assegnati 2
punti (risposta esatta), 0 punti (nessuna risposta), o -0.5 punti (risposta
sbagliata) per un punteggio massimo di 8 punti. All'esercizio di programmazione
della prova scritta viene assegnato un punteggio massimo di 8 punti. Quindi il
punteggio massimo finale della prova scritta sarà 8+8=16
La prova scritta si considera superata solo se il suo punteggio risulta essere
maggiore o uguale a 12.
La prova pratica consiste nello sviluppo direttamente al calcolatore di un
programma in linguaggio C, inerente la gestione di array, matrici o file
utilizzando tecniche di programmazione strutturata.
La valutazione della prova pratica consiste nell'esecuzione del programma e
nell'analisi del codice, ed è seguita da un breve colloquio con una discussione
sugli esercizi della prova scritta e sul codice sviluppato durante la prova pratica.
Alla prova pratica viene assegnato un punteggio massimo di 14 punti ed essa si
considera superata solo se il suo punteggio risulta essere maggiore o uguale a
5.
La valutazione finale tiene conto dei voti conseguiti nella prova scritta e
nellaprova pratica.
È prevista una prova intermedia in itinere. La prova è composta da due
domande a risposta multipla e un esercizio e contribuisce alla determinazione
del voto finale con un peso pari al 4+8=12 della valutazione complessiva.
La prova intermedia si intende superata con un punteggio minimo di 8/12. Il
risultato ottenuto rimane valido esclusivamente nell'ambito del semestre in cui la
prova viene sostenuta.
Gli studenti che abbiano superato la prova intermedia possono accedere a una
prova finale scritta in forma ridotta, anch'essa composta da due domande a
risposta multipla e un esercizio pratico. Il voto finale è dato dalla somma dei due
punteggi parziali ed è espresso in trentesimi.
Gli studenti che non abbiano sostenuto o superato la prova intermedia, ovvero i
cui risultati in itinere non siano più validi, sostengono l'esame finale in forma
integrale.
Le fasce di punteggio corrispondono ai giudizi qualitativi seguenti:
1-17: la conoscenza della materia è insufficiente;
18-20: la conoscenza della materia e le competenze di programmazione sono
sufficienti;
21-23: la conoscenza della materia e le competenze di programmazione sono
discreti;
24-25: la conoscenza della materia e le competenze di programmazione sono
buoni;
26-27: la conoscenza della materia e le competenze di programmazione sono
molto buoni;
28-30: la conoscenza della materia e le competenze di programmazione sono
ottimi.
La lode è riservata agli studenti che dimostrano eccellenti competenze di
programmazione e un'ottima padronanza della materia.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

P.J. Deitel and H.M. Deitel. Il linguaggio C: Fondamenti e tecniche di
programmazione, 9/Ed. Pearson, ISBN 9788891906236, 2022.

Codice insegnamento 24699

PROGRAMMAZIONE CON LABORATORIO II 1° anno · 7 CFU · INFO-01/A · 0 file

Il corso si propone di fornire allo studente gli strumenti teorici e pratici per la progettazione e la realizzazione di programmi in linguaggio C avanzato per la risoluzione di semplici problemi con strategie di…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di fornire allo studente gli strumenti teorici e pratici per la
progettazione e la realizzazione di programmi
in linguaggio C avanzato per la risoluzione di semplici problemi con strategie di
elaborazione sia iterative che ricorsive. Vengono
affrontate la gestione dinamica della memoria e la costruzione di strutture dati
dinamiche, alcune delle quali definite mediante
l’ausilio dei puntatori. Si implementeranno, in diverse versioni e con diverso
grado di complessità, funzioni ricorsive ed
iterative per la costruzione e per la gestione delle strutture dati, consentendo
così allo studente di acquisire familiarità con la
programmazione, gli algoritmi, e la complessità computazionale. Viene
affrontata ed esemplificata la costruzione di strutture
dati, a crescente livello di astrazione.
Un consistente numero di ore previste sarà svolta in aula attrezzata con
calcolatori, in maniera che gli studenti possano sviluppare direttamente gli
esempi e gli esercizi proposti dal docente.

Programma

2,5 Campi di bit e Operazioni orientate ai bit. And , Or , NOT, XOR e operatori SHIFT a destra e sinistra. Costanti
di enumerazione e tipi enumerati.Puntatori e oggetti dinamici. Allocazione e deallocazione di variabili. Puntatori
ed array.
2,5 Tipi enumeratori, la funzione main e la direttive del precompilatore, Programmazione Modulare, Gestione dei
FIle,
3 La ricorsione. Esempi di funzioni ricorsive: il fattoriale, la somma di una successione di interi, i MCD ricorsivo,
numeri di Fibonacci. Confronto tra iterazione e ricorsione.
6 Esempi di strategie ricorsive per la risoluzione di problemi su array (ricerca della somma, del massimo, ecc.) e
su stringhe (test di polindroma di stringa, inversione di una stringa), ricerca su un array, ricerca binaria.
3 QuickSort ricorsivo, la ricorsione in coda.
3 Allocazione dinamica di una matrice, ricorsione su matrici, calcolo del determinate di una matrice quadrata
con Laplace.
3 File e memorizzazione dei dati, funzione per la lettura e scrittura su file in C
4 Strutture Dati Astratte le Liste. inserimento, cancellazione, ordinamento di una lista, Concatenazione di due
liste.
3 Inversione ricorsiva di una lista, ricerca in una lista. Fusione di liste ordinate. Mergesort di liste
concatenate. Confronto tra array e liste.
3 La coda come ADT: Struttura dati FIFO e sua realizzazione con i puntatori. Realizzazione con lista
concatenata, array, o array ridimensionabile.
La pila coma ADT: Struttura dati LIFO e sua realizzazione con i puntatori. Realizzazione con lista concatenata,
array, o array ridimensionabile.
Valutazione di espressioni postfisse mediante pila.
3 Strutture Dati Astratte, Alberi Binari , Alberi di ordinamento Alberi e ADT albero binario di ricerca (BST).
4 Inserimento, visita, stampa, ricerca e cancellazione di un elemento in un BST in linguaggio C
Cenni sui grafi e loro implementazione in linguaggio C.

2 Laboratorio di programmazione in C sulle operazioni bit a bit, AND OR, XOR e Shift. Rappresentazioni e
operazioni su interi più lunghi di 4 byte con operatori bit a bit.
3 Laboratorio di programmazione in linguaggio C su funzioni ricorsive su vettori numerici , e stringhe di caratteri
3 Laboratorio di programmazione in linguaggio C sulla implementazione ricorsiva del QuickSort di un array
numerico e Calcolo del determinate di una matrice quadrata con la regola di Laplace

3 Laboratorio di programmazione in linguaggio C sulla gestione di un archivio mediante array di stringhe
Allocazione dinamica e File
3 Laboratorio di programmazione C sulla ricerca di un elemento e ordinamento di un archivio utilizzando array di
stringhe
6 Laboratorio di programmazione C sulla gestione di un albero binario e albero binario di ricerca
3 Laboratorio di programmazione C sulla implementazione dell' ordinamento di un array con l'algoritmo del
mergesort
6 Laboratorio di programmazione C sulla gestione di un archivio di clienti mediante una lista concatenata
3 Laboratorio di programmazione C sulla gestione di una lista bi concatenata

Modalità d'esame

L’esame è costituito da una prova scritta/pratica e da un colloquio orale. La
prova scritta/pratica è costituita da 5 domande a risposte multiple o aperta e da
una prova pratica consiste nello sviluppo direttamente al calcolatore di due
programmi in linguaggio C.
Le domande della prova scritta avranno come argomento conoscenze di
programmazione avanzata, mentre la prima prova pratica avrà come argomento
risoluzione di problemi di programmazione ricorsiva su array numerici o
alfanumerici, infine la seconda prova pratica avrà come argomento risoluzioni di
problemi di programmazione inerenti la gestione di liste, file o strutture
utilizzando tecniche di programmazione dinamica. Per la valutazione della prova
scritta si assegnerà a ciascuna risposta delle 5 domande a risposta multipla o
aperta 2 punti (risposta esatta), 0 punti (nessuna risposta), o -0.5 punti (risposta
sbagliata) per un punteggio massimo di 10 punti, mentre per i due esercizi di
programmazione saranno valutate con un punteggio da 0-10 punti. Quindi il
punteggio massimo finale della prova scritta/pratica sarà 30/30 e sarà considera
superata solo se il suo punteggio risulta essere maggiore o uguale a 15.
La prova orale consiste nella discussione della prova scritta/pratica con
eventuale esecuzione e analisi del codice prodotto, seguita da un colloquio
inerente agli argomenti del corso, e ad essa sarà valutata con un punteggio da
0-30. Il risultato finale sarà la media dei voti riportati nella prova scritta/pratica e
nella prova orale.
In alternativa la prova scritta/pratica è facoltà degli studenti del corso sostenere
due prove in itinere la prima da svolgere nella pausa didattica dedicata e la
seconda da svolgere alla fine del corso.
La prima prova in itinere è costituita da una prova scritta/pratica con 3 domande
a risposte multiple o aperta che avranno come argomento conoscenze di
programmazione avanzate affrontate nella prima parte del corso, e da una
prova pratica consiste nello sviluppo direttamente al calcolatore di un
programma in linguaggio C che avrà come argomento risoluzione di problemi di
programmazione ricorsiva su array numerici o alfanumerici.
La seconda prova in itinere è costituita da una prova scritta/pratica con 2
domande a risposte multiple o aperta che avranno come argomento
conoscenze di programmazione avanzate affrontate nella seconda parte del
corso, e da una prova pratica consiste nello sviluppo direttamente al calcolatore
di un programma in linguaggio C che avrà come argomento risoluzioni di
problemi di programmazione inerenti la gestione di liste, file o strutture
utilizzando tecniche di programmazione dinamica.
La valutazione delle due prova sarà la stessa descritta per l'esame , la prima
prova in itinere sarà considerata superata se si è ottenuto un punteggio
maggiore o uguale a 8/16. La prova scritta/pratica sarà considera superata solo
se la somma delle due prova in itinere risulta essere maggiore o uguale a 15.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

P.J. Deitel and H.M. Deitel. Il linguaggio C: Fondamenti e tecniche di
programmazione, 9/Ed. Pearson, September 2022.
R. Sedgewick. Algoritmi in C, 4/Ed. Pearson, ISBN 9788891900746, 2015.
(strutture astratte di dati / abstract data structures)

Codice insegnamento 24698

ALGORITMI E STRUTTURE DATI 2° anno · 9 CFU · INF/01 · 0 file

Esporre lo studente a tecniche fondamentali di progetto ed analisi di algoritmi. In particolare, si copre tutto lo spettro delle strutture dati fondamentali e dei principali paradigmi algoritmici, con cenni allo studio…

Scheda dell'insegnamento

Obiettivi formativi

Esporre lo studente a tecniche fondamentali di progetto ed analisi di algoritmi. In
particolare, si copre tutto lo spettro delle strutture dati fondamentali e dei
principali paradigmi algoritmici, con cenni allo studio di complessità
computazionale di problemi intrattabili. Si fa cenno anche ad aspetti
ingegneristici fondamentali per l’implementazione di algoritmi efficienti.

Programma

2 NOZIONI INTRODUTTIVE
Algoritmi e Strutture Dati. Nozioni introduttive per la soluzione algoritmica di un problema, diverse soluzioni per
uno stesso problema. Il problema dell’efficienza di un algoritmo.
6 TECNICHE EMPIRICHE E MATEMATICHE PER L’ANALISI DI ALGORITMI
Analisi degli algoritmi. Velocità di crescita delle funzioni. Ricorrenze Fondamentali. Soluzioni delle equazioni di
ricorrenza. Metodo dell’iterazione e Master Theorem.
6 MODELLI di CALCOLO, COMPLESSITA' COMPUTAZIONALE E ALGORITMI
-Modelli Classici: Random Access Machines, Complessità Computazionale RAM, Macchine di Turing e
relazione fra esse (linee generali).
-Modelli Avanzati: Modello Map-Reduce
3 ALGORITMI DI ORDINAMENTO
Lower bound per gli algoritmi di ordinamento: caso pessimo e caso medio. Principali algoritmi di sorting
5 PARADIGMI PER IL PROGETTO DI ALGORITMI EFFICIENTI: Divide et Conquer. Esempi: Ricerca Minimo e
Massimo, Moltiplicazione d'interi, Moltiplicazione di Matrici; Mergesort; Il Quicksort. Analisi worst case e analisi
caso medio.
5 PARADIGMI PER IL PROGETTO DI ALGORITMI EFFICIENTI: Programmazione Dinamica e Tecniche
Greedy. Esempi:
Prodotto di n matrici. Longest Common Subsequence, Riconoscimento Grammatiche Context Free. Algoritmi
Greedy: Optimal Storage on Tapes. Il Problema dello Zaino (versione “greedy”).
5 STRUTTURE DATI AVANZATE ED OPERAZIONI SU INSIEMI-TABELLE E STRUTTURE STATICHE
Operazioni Fondamentali su Insiemi. Tabelle Hash. Union-find.
5 STRUTTURE DATI AVANZATE ED OPERAZIONI SU INSIEMI: ALBERI.
Alberi di Ricerca Ottimi, Schemi di Alberi Bilanciati, Dizionari e Code a Priorita, Mergeable Heaps, Code
Concatenabili.
5 ALGORITMI SU GRAFI: RAPPRESENTAZIONE e CONNETTIVITA’
Rappresentazione di Grafi, Visite su Grafi, Biconnettività e Connettività Forte,
5 ALGORITMI SU GRAFI: Problemi di Ottimizzazione.
Algoritmi di Spanning Tree Minimo, Algoritmi per Cammini Ottimi.
3 TEORIA DELL' NP- COMPLETEZZA
Macchine di Turing Non Deterministiche. Cenni sulle Classi P, NP ed NP-C.
1 Lezione di Programmazione Algoritmica. STRUTTURE DATI ELEMENTARI IN C (Riepilogo da
Programmazione)
Array, liste concatenate, stringhe e loro implementazione in C.
3 Lezioni di Programmazione Algoritmica.
STRUTTURE DATI ASTRATTE IN C
Pile, Code e loro implementazione in C mediante array e liste concatenate. Valutazione di un’espressione in
forma postfissa mediante una pila e sua implementazione in C. Tali implementazioni sono un riepilogo da
Programmazione.
4 Lezioni di Programmazione Algoritmica. ALGORITMI DI SORTING IN C BASATI SU CONFRONTI. Esempi di
implementazione: selectionsort; insertionsort; bubblesort; Mergesort, Heapsort, Quicksort.
Implementazione di algoritmi di sorting in C.
3 Lezioni di Programmazione Algoritmica.
-ALGORITMI DI SORTING IN C: Il CASO DEGLI INTERI. Esempi di implementazioni: bucketsort; sorting
lessicografico.
6 Lezioni di Programmazione Algoritmica. PARADIGMI DI PROGETTO DI ALGORITMI IN C.
Ricorsione. Divide et Impera: ricerca del minimo e del massimo, ricerca binaria e loro implementazione in C.
Programmazione Dinamica: Prodotto Ottimo di Serie di Matrici
5 Lezioni di Programmazione Algoritmica. ALBERI E GRAFI.
Strutture dati per la rappresentazione di grafi ed alberi in C. Algoritmi di visita su alberi in C. Visita DFS e BFS
in C.

Modalità d'esame

Prova Orale. La prova orale consiste in un colloquio che verifica il possesso
delle competenze e delle conoscenze disciplinari previste dal corso; la
valutazione viene espressa in trentesimi.
Le domande sia aperte sia semi-strutturate e appositamente pensate per
testare i risultati di apprendimento previsti, tenderanno a verificare a) le
conoscenze acquisite; b) le capacità elaborative, c) il possesso di un’adeguata
capacità espositiva.
Gli aspetti menzionati fin qui, contribuiranno alla formazione del voto secondo
la seguente scala di merito:
a) Conoscenza di base dell’algoritmica, e capacità limitata di applicarla
autonomamente in situazioni nuove, sufficiente capacità di analisi algoritmica e
di esposizione delle procedure concettuali seguite (voto 18-21);
b) Buona conoscenza di base dell’algoritmica e buona capacità di applicarla
autonomamente in situazioni nuove, buona capacità di analisi algoritmica e di
esposizione delle procedure concettuali seguite (voto 22-25);
c) Conoscenza approfondita dell’algoritmica avanzata, e capacità di applicarla
prontamente ed autonomamente in situazioni nuove, ma con qualche
incertezza; capacità di analisi algoritmica e di esposizione delle procedure
concettuali seguite molto buona (voto 26-28);
d) Conoscenza approfondita e diffusa dell’algoritmica, ottima capacità di
applicarla prontamente ed autonomamente in situazioni nuove; ottima
capacità di analisi algoritmica e di esposizione delle procedure concettuali
seguite. (voto 29-30L);
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità- in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

A.V. Aho, J.E. Hopcroft, J.D. Ullman, The Design and Analysis of Computer
Algorithms, Addison Wesley. 1974- ISBN 9780201000290. Libro di Testo
Pincipale- Main Textbook
Per i seguenti argomenti specifici, si utilizzeranno i seguenti testi (For the
specific topics listed below, the textbook is as follows).
T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein - Introduzione agli Algoritmi
e strutture dati, McGraw Hill, 2010. ISBN-10
883866515X
Hashing
C. Demetrescu, I. Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, McGraw-Hill,
2008. ISBN-10
8838664684.
Nozioni Introduttive. Tecniche Empiriche e Matematiche per l'Analisi di Algoritmi.
Algoritmi di Ordinamento (Introductory Notions. Mathematical and Empirical
Techniques for the Analysis of Algorithm. Sorting Algorithms).
H. Horowitz, S. Sahni, Fundamentals of Computer Algorithms, Computer
Science Press, 1984. ISBN-10 : 9780914894223.
Paradigma Greedy (Greedy Paradigm).
Materiale distribuito dal docente (Handouts from the instructor).
Tutta la parte di Lezioni di Programmazione Algoritmica e Map-Reduce. (All part
regarding Algorithmic Programming and Map-Reduce).

Codice insegnamento P957012409

ANALISI MATEMATICA II 2° anno · 6 CFU · MAT/05 · 0 file
Archivio Globale

Il corso ha lo scopo di fare acquisire allo studente le tecniche analitiche disponibili per risolvere le equazioni differenziali ordinarie e, come applicazione, a comprendere l'idea di modellazione matematica. Esso…

Scheda dell'insegnamento

Obiettivi formativi

Il corso ha lo scopo di fare acquisire allo studente le tecniche analitiche
disponibili per risolvere le equazioni differenziali ordinarie e, come applicazione,
a comprendere l'idea di modellazione matematica. Esso mira inoltre a far
acquisire allo studente la capacità di operare con il calcolo differenziale e
integrale di funzioni di due variabili e di avere conoscenza delle serie di potenze
dell'ottimizzazione libera e vincolata. Questo corso incoraggia lo studente a
sviluppare abilità e fare affidamento sull'uso di metodi matematici per risolvere
problemi.

Programma

4 Serie numeriche. Cenni sulle successioni di funzioni. Serie di funzioni.
4 Serie di potenze e sviluppi di MacLaurin.
4 Equazioni differenziali ordinarie (EDO). Integrale generale di una EDO. Problemi di Cauchy. Equazioni a
variabili separabili.
6 Equazioni differenziali lineari del primo e secondo ordine. Cenni su modelli.
6 Calcolo differenziale per funzioni di due variabili. Cenni di topologia in R^2. Grafici e curve di livello. Limiti e
continuità per funzioni di due variabili. Derivate parziali (in particolare teorema di Schwarz, teorema di Fermat).
Differenziabilità (in particolare teorema del gradiente e teorema del differenziale totale).
4 Massimi e minimi liberi e vincolati.
4 Calcolo integrale per funzioni di due variabili. Integrazione su intervalli del piano, su domini limitati. Insiemi
semplici e formule di sdoppiamento. Cambiamento di coordinate negli integrali doppi.

2 Esercizi e complementi su serie numeriche, successioni e serie di funzioni.
2 Esercizi e complementi su serie di potenze e sviluppi di MacLaurin.
6 Esercizi e complementi sulle equazioni differenziali a variabili separabili e lineari del primo e secondo ordine.
6 Esercizi e complementi sul calcolo differenziale per funzioni di due variabili.
4 Esercizi e complementi su massimi e minimi liberi e vincolati.
4 Esercizi e complementi sul calcolo integrale per funzioni di due variabili.

Modalità d'esame

ESAME:
L'esame del corso consiste in una prova scritta e una prova orale. La prova
scritta e la prova orale sono valutate in trentesimi, ciascuna prova si riterrà
superata con una valutazione non inferiore a 18, ed il voto finale sarà la media
dei voti conseguiti in ciascuna prova. La prova scritta (durata 2 ore) richiede la
risoluzione di 4 esercizi riguardanti i principali argomenti trattati nei due moduli.
La prova scritta ha lo scopo di valutare la capacità di calcolo, il grado di
conoscenza dei concetti presentati durante il corso e la capacità degli studenti di
applicare le conoscenze in modo autonomo. La prova orale consiste nella
discussione degli argomenti della prova scritta e in un colloquio riguardante le
definizioni e i risultati principali presentati durante il corso. La prova orale
permetterà anche di valutare la padronanza del linguaggio tecnico e la capacità
di ragionamento.
PROVA IN ITINERE (scritta):
Nel periodo di sospensione dell’attività didattica per lo svolgimento delle
cosiddette "prove in itinere" previsto dal calendario didattico, è facoltà degli
studenti sostenere una prova scritta in itinere. La prova (1 ora e 30 minuti)
richiede la risoluzione di 3 esercizi e 1 quesito, riguardanti i principali argomenti
svolti nel I periodo del II semestre. La prova, valutata in trentesimi, si riterrà
superata con una valutazione non inferiore a 18. Gli allievi che superano la
prova in itinere, alla conclusione del corso e durante la prova scritta dell'esame
ordinario, dovranno svolgere solo gli esercizi riguardanti la parte di programma
svolta nel II periodo del II semestre, anche in questo caso la prova si valuterà n
trentesimi, si riterrà superata con una valutazione non inferiore a 18. La
votazione della prova scritta sarà data dalla media aritmetica dei voti riportati
nelle due prove scritte, così da risultare espressa in trentesimi. La prova orale e
la valutazione finale saranno come nel caso dell'esame ordinario.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.
VALUTAZIONE:
La valutazione finale, espressa in trentesimi, sarà effettuata sulla base dei
seguenti criteri:

  • Sufficiente 18-21. Conoscenza di base degli argomenti principali e sufficiente
    proprietà di linguaggio; sufficiente capacità di risolvere esercizi di base.
  • Buono 22-25. Buona conoscenza dei temi principali e adeguata proprietà di
    linguaggio; buona capacità di applicare le conoscenze per risolvere gli esercizi
    proposti.
  • Molto buono 26-29. Conoscenza approfondita degli argomenti, possesso di
    una piena proprietà di linguaggio; più che buona la capacità di applicare in
    autonomia le conoscenze per risolvere i problemi proposti.
  • Eccellente 30-30L. Conoscenza approfondita e ampia degli argomenti, ottima
    proprietà di linguaggio; ottima capacità di applicare con rigore e piena
    autonomia le conoscenze per risolvere i problemi proposti.

Testi di riferimento

Testo consigliato/Textbook:
M. Bramanti - C.D. Pagani - S. Salsa, Matematica. Calcolo infinitesimale e
algebra lineare.
Zanichelli, volume unico, 2004. ISBN: 9788808075475 (consigliata qualunque
edizione / any edition)

Codice insegnamento P312818358

ANALISI NUMERICA 2° anno · 2° semestre · 6 CFU · MAT/08 · 0 file
BASI DI DATI 2° anno · 9 CFU · INF/01 · 0 file

Si vogliono impartire agli studenti delle nozioni di base per la progettazione e l’utilizzo dei database. Essendo un corso professionalizzante, lo studente deve essere messo in grado di progettare e realizzare in maniera…

Scheda dell'insegnamento

Obiettivi formativi

Si vogliono impartire agli studenti delle nozioni di base per la progettazione e
l’utilizzo dei database. Essendo un corso professionalizzante, lo studente deve
essere messo in grado di progettare e realizzare in maniera autonoma una base
di dati soddisfacendo le richieste di un committente. Deve inoltre essere in
grado di estrarre informazioni dal database mediante interrogazioni SQL.

Programma

4 Il concetto di Base di Dati all’interno di un sistema informativo. I problemi di ridondanza e inconsistenza dei
dati. Condivisione dei dati. Il DBMS. Basi di dati versus file systems.
2 I modelli di dati. Schema fisico Schema logico e Schema esterno. L’indipendenza dei dati. I linguaggi per
l'interrogazione delle basi di dati. DDL e DML.
4 Il modello relazionale. Il concetto di relazione. Informazioni incomplete. La gestione dei valori nulli. I vincoli di
integrita'. Chiavi e superchiavi. Vincoli di integrita' referenziali.
4 Linguaggi di interrogazione di basi di dati. L’Algebra Relazionale. Gli operatori dell’Algebra Relazionale. Gli
operatori insiemistici. Ridenominazione. Proiezione e Selezione.
4 Il Join. Join Naturale, Theta Join, Equi Join, Self Join, Join esterno. Esercizi. Equivalenza fra espressioni
algebriche. Viste in algebra relazionale.
6 Data Manipulation Language. Interrogazioni semplici in SQL. Proiezione, selezione e ridenominazione in SQL.
La clausola where. Ordinamenti, Funzioni di gruppo e raggruppamenti in SQL. Il Join in SQL. Le due sintassi.
Self Join. Gli operatori Booleani: Unione, Intersezione e Differenza. Subquery. Funzioni di gruppo e
raggruppamenti. Esercitazioni su query SQL.
6 Il linguaggio di interrogazione SQL. Il Data Definition Language. Creazione di tabelle. Attributi, domini e valori
di default. Vincoli di integrita'. Primary Key, Unique, not null. Vincoli di Integrita' referenziale. Foreign key. Il
vincolo Check. Cancellazione di tabelle e modifica di tabelle. Indici.
6 La Progettazione Concettuale. Il modello Entity-Relationship. I Costrutti del modello Entity-Relationship. Entita'.
Associazione. Attributo. Cardinalita': associazioni uno a uno, uno a molti, molti a molti. Identificatore interno ed
esterno. Generalizzazione, ereditarieta'. Generalizzazione totale o parziale. Generalizzazione esclusiva o
sovrapposta. Esercizi. Documentazione associata agli schemi concettuali. La progettazione Concettuale.
Analisi dei requisiti. Costruzione del modello concettuale. Scelta tra Entita' e Associazione. Riconoscere le
generalizzazioni. Pattern di progetto. Strategie di Progetto. Bottom-Up, Top-Down e Inside-Out. Metodologie
per la creazione del modello concettuale. Esempi.
2 La Progettazione di una Base di Dati. Metodologia di Progetto. Progetto Concettuale, logico e fisico.
6 La Progettazione Logica. Ristrutturazione del modello concettuale. Valutazione delle prestazioni. Analisi delle
ridondanze, eliminazione delle generalizzazioni, Partizionamento/accorpamento di concetti, Scelta degli
identificatori principali. Traduzione nel modello logico. Associazioni molti a molti, associazioni uno a molti,
associazioni uno a uno. Traduzione di schemi complessi.
6 Implementazione di una base di dati in un DBMS commerciale (Oracle o Mysql)
6 Esercitazioni per la progettazione concettuale e logica di una Base di Dati reale.
6 Interrogazioni su un database realizzato su un DBMS.
2 Trigger. Tipi di Trigger. Al livello di riga e al livello di istruzione. On insert, on delete, on update. Valori vecchi e
valori nuovi. Creazione di un trigger. Cancellazione di un Trigger. Trigger combinati. Attivazione e
disattivazione dei trigger.
4 Normalizzazione. Ridondanze dei dati. Forme normali
4 Database e sistemi di storage nel distribuito: Quali sono le complicazioni, quali le soluzioni. Database No SQL.
Differenze tra database tradizionali e database No SQL. Specifiche tipologie di database e applicazioni.

Modalità d'esame

Prova scritta, prova orale.
La prova scritta, che si svolge in due ore, consiste di due parti. Nella prima parte
si richiede allo studente di progettare un piccolo database sulla base di alcuni
requisiti assegnati. Lo studente deve produrre uno schema concettuale Entity-
Relationship, e il corrispondente schema logico relazionale. Questa parte della
prova scritta mira a verificare quanto lo studente abbia compreso le tecniche di
progettazione di un database e la sua capacita' di applicare le conoscenze
acquisite a situazioni concrete.
La seconda parte della prova scritta richiede allo studente di utilizzare il
linguaggio dell'Algebra Relazionale e il linguaggio SQL per l'interrogazione di un
database. Questa parte di compito serve a verificare l'abilita' dello studente di
eseguire delle query complesse. Le query assegnate sono 3 per l'Algebra
relazionale e 7 per l'SQL.
Ognuna delle due parti della prova scritta viene valutata con voti da 0 a 30. Per
superare la prova, entrambe le parti devono superare la votazione di 18/30.
E' prevista una prova in itinere che si svolge intorno alla meta' semestre, che
consiste in un insieme di esercizi in cui si richiede di formulare 3 query in
Algebra relazionale e 7 query in SQL. Gli studenti che supereranno la prova con
almeno 18/30 saranno esonerati dallo svolgimento dei corrispondenti quesiti
durante la prova scritta finale.
Inoltre verranno proposti agli studenti presenti un grosso problema di
progettazione di un database. Il lavoro svolto in classe e a casa confluirà nella
creazione di un progetto. Gli studenti che partecipano a quest'attivita' di
progettazione in maniera continua e attiva, dimostrando di avere acquisito le
tecniche di progettazione e interrogazione di un database, potranno discutere il
progetto costruito durante l'anno, in sostituzione della prova scritta. Per questo
motivo questa modalita' di prova alternativa e' destinata solo agli studenti che
partecipano attivamente alle lezioni
La prova orale, cui accedono gli studenti che hanno superato con almeno 18/30
entrambe le parti della prova scritta, o hanno superato con almeno 18/30 la
prova in itinere e svolto in maniera soddisfacente il progetto durante l'anno,
consiste nella discussione del compito (o del progetto), e in alcune (3 o 4)
domande riguardanti gli argomenti teorici del corso. L'esame orale ha lo scopo
di valutare la capacita' dello studente di discutere e difendere le proprie scelte
implementative e di valutare le sue abilita' comunicative, essenziali per
promuovere il proprio prodotto informatico nel mondo del lavoro.
La soglia della sufficienza sara' raggiunta se lo studente raggiungera' una
valutazione di almeno 18/30 in entrambe le parti della prova scritta, mostrera' di
conoscere i concetti fondamentali del corso e sara' in grado di esporli ed
argomentarli . Al di sotto di tale soglia, l’esame risultera' insufficiente.
I livelli di valutazione saranno proporzionali alle abilita' di utilizzo del linguaggio
tecnico, all’esposizione corretta e dettagliata degli argomenti e alla capacita' di
applicare e collegare i concetti in autonomia.
In particolare i criteri di valutazione seguono la seguente tabella:
Valutazione: Eccellente
Voto: 30 - 30 e lode
Esito: Ottima conoscenza degli argomenti, ottima proprieta' di linguaggio, buona
capacita' analitica, lo studente e' in grado di applicare le conoscenze per
risolvere i problemi proposti.
Valutazione: Molto buono
Voto: 27-29
Esito: Buona padronanza degli argomenti, piena proprieta' di linguaggio, lo
studente e' in grado di applicare le conoscenze per risolvere i problemi proposti.
Valutazione: Buono
Voto: 24-26
Esito: Conoscenza di base dei principali argomenti, discreta proprieta' di
linguaggio, con limitata capacita' di applicare in modo autonomo le conoscenze
alla soluzione dei problemi proposti.
Valutazione: Soddisfacente
Voto: 21-23
Esito: Non ha piena padronanza degli argomenti principali dell'insegnamento ma
ne possiede le conoscenze, soddisfacente proprieta' di linguaggio, scarsa
capacita' di saper applicare in modo autonomo le conoscenze acquisite.
Valutazione: Sufficiente
Voto: 18-20
Esito: Minima conoscenza di base degli argomenti principali dell'insegnamento e
del linguaggio tecnico, scarsissima o nulla capacita' di saper applicare in modo
autonomo le conoscenze acquisite.
Valutazione:Insufficiente
Esito: Non possiede alcuna conoscenza degli argomenti trattati nel corso
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

Testo principale (main textbook)
BASI DI DATI, P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone
McGraw-Hill Italia, 2018,
Quinta edizione.
ISBN: 8838694451
Chapter 1: Introduzione /introduction
Chapter 2: Il modello relazionale / The relational model
Chapter 3 - Sections 3.1, 3.2: Algebra relazionale /Relational Algebra
Chapter 4: SQL: concetti base/SQL basic concepts
Chapter 5 - section 5.1: SQL:caratteristiche evolute/SQL advanced features
Chapter 6: Metodologie e modelli per il progetto/ Methodologies and models for
the project
Chapter 7: Progettazione concettuale / Conceptual design
Chapter 8: Progettazione Logica / Logical Design
Chapter 9: Normalizzazione / Normalization
Testi per consultazione (Consultation texts)
Albano, Ghelli, Orsini, Fondamenti di Basi di dati, Zanichelli. (reso disponibile in
formato web dalla casa editrice http://fondamentidibasididati.it/wp-content/
uploads/2020/03/FondamentiBD-Edizione2020.pdf)
Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom. Database Systems:
The Complete Book.Pearson (Addison-Wesley + Prentice-Hall)

Codice insegnamento P551636012

CALCOLO DELLE PROBABILITA' 2° anno · 6 CFU · MAT/06 · 0 file

Sviluppare intuito e competenza sull'utilizzo degli strumenti fondamentali del calcolo delle probabilità (particolare della probabilità condizionata) in problemi concreti in cui l'incertezza è rilevante.

Scheda dell'insegnamento

Obiettivi formativi

Sviluppare intuito e competenza sull'utilizzo degli strumenti fondamentali del
calcolo delle probabilità (particolare della probabilità condizionata) in problemi
concreti in cui l'incertezza è rilevante.

Programma

4 Spazi di probabilità; probabilità condizionale, indipendenza
8 Modelli discreti: variabili aleatorie (2), Valore atteso e momenti (2), principali leggi (binomiale, geometrica,
Poisson...) (4)
8 Modelli continui: Funzioni di ripartizione, valore atteso, valore atteso condizionale (2), principali leggi nel
continuo (esponenziale, Gamma, Normale...) (4), funzioni caratteristiche
8 Convergenza, teoremi limite: legge debole dei grandi numeri (2), legge forte (2), teorema limite centrale (2),
processi di Poisson (2)
4 Introduzione alle Catene di Markov

8 modelli discreti
8 modelli continui
4 approssimazione normale e problemi di stima
4 Catene di Markov

Modalità d'esame

La valutazione è come sempre espressa in trentesimi, con eccellenza segnalata
con 30/30 e lode.
L'esame consiste in una serie di compiti che il docente assegnerà durante il
corso, e si concluderà con un colloquio orale ove questo verrà ritenuto
opportuno.
Gli studenti hanno ovviamente diritto a presentarsi a tutti gli appelli dell'anno
accademico, ma sono calorosamente invitati a seguire le lezioni e fare le prove
intermedie che si svolgono durante il corso, perché questo rende sicuramente
più completa la preparazione che si raggiunge.
Descrizione dei metodi di valutazione

  • Valutazione eccellente: voto 30-30 e lode. Esito: ottima conoscenza degli
    argomenti, ottima proprietà di linguaggio, buona capacità analitica, lo studente è
    in grado di applicare le conoscenze per risolvere i problemi proposti.
  • Valutazione molto buono: voto 26-29. Esito: Buona padronanza degli
    argomenti, piena proprietà di linguaggio, lo studente è in grado di applicare le
    conoscenze per risolvere i problemi proposti.
  • Valutazione buono: voto 24-25. Esito: conoscenza di base dei principali
    argomenti, discreta proprietà di linguaggio, con limitata capacità di applicare
    autonomamente le conoscenze alla soluzione dei problemi proposti.
  • Valutazione soddisfacente: voto 21-23. Esito: non ha piena padronanza degli
    argomenti principali dell’insegnamento ma ne possiede le conoscenze,
    soddisfacente proprietà di linguaggio, scarsa capacità di applicare
    autonomamente le conoscenze acquisite.
  • Valutazione sufficiente: voto 18-20. Esito: minima conoscenza di base degli
    argomenti principali dell’insegnamento e del linguaggio tecnico, scarsissima o
    nulla capacità di applicare autonomamente le conoscenze acquisite.
  • Valutazione insufficiente. Esito: non possiede una conoscenza accettabile dei
    contenuti degli argomenti trattati nell'insegnamento.
    Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
    compensativi e le misure dispensative individuate, dal CeNDis - Centro di
    Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
    attuazione della normativa vigente

Testi di riferimento

Paolo Baldi, Calcolo delle Probabilità, Seconda edizione, McGrawHill 2011.
EAN:9788838666957
Eventuali note del docente su estensioni degli argomenti trattati

Codice insegnamento P686949796

FONDAMENTI DI SCIENZA DEI DATI 2° anno · 7 CFU · INF/01 · 0 file

Il corso fornisce competenze riguardanti la scienza dei dati. Lo studente imparerà come trarre conclusioni utili da set di dati ampi e diversificati attraverso l'esplorazione, la previsione e l'inferenza. Gli studenti…

Scheda dell'insegnamento

Obiettivi formativi

Il corso fornisce competenze riguardanti la scienza dei dati. Lo studente
imparerà come trarre conclusioni utili da set di dati ampi e diversificati attraverso
l'esplorazione, la previsione e l'inferenza. Gli studenti impareranno a porre
domande appropriate sui propri dati e a interpretare correttamente le risposte
fornite dagli strumenti inferenziali e computazionali. Lo studente prenderà
familiarità con tecniche di apprendimento automatico per sfruttare i dati al fine di
risolvere compiti complessi. Le lezioni comprendono l’implementazione di
algoritmi in Python. A tale scopo, una parte del corso sarà dedicata a fornire agli
studenti la conoscenza di base di tale linguaggio.

Programma

4 Python: Liste, tuple, insiemi e dizionari. Librerie NumPy e Scikit-learn.
2 Le fasi di un progetto di scienza dei dati: Determinare gli obiettivi. Analisi esplorativa dei dati. Il problema della
qualità dei dati: preelaborazione, pulizia dei dati, gestione dei dati mancanti e campionamento.
4 Analisi esplorativa dei dati - Capire i dati: ricerca di relazioni tra dati, verifica di appartenenza a distribuzioni,
ricerca di outlier, standardizzazione, covarianza.
4 Costruire buoni set di addestramento. Rimozione e imputazione dei valori mancanti da un dataset.
Miglioramento della collocazione in categorie dei dati per gli algoritmi di machine learning. Selezione delle
caratteristiche rilevanti per la costruzione di un modello.
3 Riduzione della dimensionalita: Singular Value Decomposition (SVD). Vettori e valori singolary. Definizione di
SVD full e economy. SVD troncata, approssimazione a basso rango e casi d'uso. Applicazione SVD per la
compressione delle immagini. Utilizzo della SVD per l'inversione di matrici. Definizione di pseudo inversa di
Moore Penrose. Soluzione di sistemi di equazioni tramite pseudo inversa.
3 L'Analisi delle Componenti Principali (PCA). Calcolo della PCA e matrice di coovarianza delle features. Scree
plot, grafici degli Score e dei Loading. Applicazione su riconoscimento volti mediante Eigenface.
2 Introduzione al machine learning: Tipi di machine learning. Metodi supervisionati e non supervisionati.
Regressione, classificazione, clustering. Tipologie dei compiti di apprendimento.Capacita' e generalizzazione
dei modelli. Concetti di underfitting e overfitting.
6 Minimizzazione tramite metodo di discesa del gradiente. Metodo Alternating descent method (ADM). Over-
Determinate System e vincoli ulteriori di minimizzazione. Metodo LASSO (least absolute shrinkage and
selection operator). k-Fold Cross-Validation.
4 Apprendimento non supervisionato: Introduzione al clustering, similarità e dissimilarità, errore quadratico,
algoritmi di clustering gerarchici: single link, complete link, average link.
4 Apprendimento non supervisionato: algoritmi di clustering partizionali e k-means. Misure di bonta' del
clustering, criteri interni e esterni. Scelta del numero di cluster ottimo. Metodo del Elbow e Coefficiente di
silhouette. Distinzione tra insiemi di cluster gerarchici e partizionali. Cluster gerarchico, l'algoritmo dendrogram.
8 Apprendimento supervisionato: Support Vector Machine (SVM), classificatore k-vicini.
4 Richiami di calco delle probabilità, variabili aleatori normali. Definizione di stimatore e decomposizione bias
varianza.

4 Python: Programmare con numeri e stringhe. Cicli. Funzioni
2 Esempi di programmazione Python e ambienti di sviluppo.

4 Definizione di Errore quadratico medio (MSE). Misura della bonta' di uno stimatore tramite MSE. Bias-Variance
decomposition. Analogia tra stimatore e predittore. Modelli machine learning. Biasdecomposition per il
predittore e rumore di predizione.
4 Valutazione dei modelli e ottimizzazione degli iperparametri: Convalida incrociata k-fold. Metodo del “gomito”.
Metriche per la valutazione delle prestazioni: precision, recall, f-measure. Grafici ROC.
2 Apprendimento supervisionato: implementazione di classificatore k-vicini.

Modalità d'esame

Le conoscenze e le competenze acquisite dallo studente saranno verificate
attraverso una prova scritta e un colloquio orale. Durante il corso è prevista la
realizzare un progetto, o caso di studio, basato sull’analisi di un dataset per cui
si richiede un lavoro di gruppo e la produzione di una relazione.
Valutazione del progetto:
La presentazione dei casi di studio verrà valutata secondo i seguenti aspetti:
i)Completezza dell’analisi condotta; ii)Trattamento dei dati; iii)Originalità;
iv)Capacità di integrazione di codice già noto dalle esercitazioni durante il corso;
La valutazione della relazione avrà un peso sul voto finale.
Valutazione della prova scritta
La prova scritta è costituita da un esercizio e 3 domande volti a verificare le
conoscenze degli argomenti affrontati durante il corso, e ad applicare le
capacità e le conoscenze acquisite. Nello svolgimento assume fondamentale
importanza il commento teorico dei risultati ottenuti. L’articolazione della
soluzione consente di apprezzare tutti i livelli di preparazione. All'esercizio e a
ciascuna domanda è assegnato un punteggio pari a 6. Per un totale di 24 punti.
La valutazione è espressa in trentesimi ed un minimo di 15 è richiesto per
accedere alla prova orale.
Valutazione per la prova orale
La prova orale consiste in un colloquio, volto ad accertare il possesso delle
competenze e delle conoscenze disciplinari previste dal corso; la valutazione
viene espressa in trentesimi. Durante il colloquio orale lo studente dovrà essere
in grado di discutere le soluzioni proposte durante la prova scritta e il progetto;
inoltre saranno proposte domande di diverso e crescente livello di complessità
al fine di valutare il raggiungimento degli obiettivi formativi e le abilità
comunicative dello studente. Infine, allo scopo di valutare l’autonomia di
giudizio, sarà richiesto di analizzare le caratteristiche di specifici scenari
applicativi e di proporre le soluzioni più adeguate ai problemi individuati. All'orale
e alla valutazione del progetto sarà assegnato un punteggio massimo di 6 punti.
La valutazione finale terrà conto sia del punteggio della prova scritta, così come
dell'esito della prova orale e del progetto.
Le fasce di punteggio corrispondono ai giudizi qualitativi seguenti:
1-17: la conoscenza della materia e le competenze di programmazione non
sono sufficienti;
18-20: la conoscenza della materia e le competenze di programmazione sono
sufficienti;
21-23: la conoscenza della materia e le competenze di programmazione sono
discreti;
24-25: la conoscenza della materia e le competenze di programmazione sono
buoni;
26-27: la conoscenza della materia e le competenze di programmazione sono
molto buoni;
28-30: la conoscenza della materia e le competenze di programmazione sono
ottimi.
La lode è riservata agli studenti che dimostrano nella prova pratica e nella prova
orale eccellenti competenze di programmazione e un'ottima padronanza della
materia.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Testi principali / main textbooks [dimensionality reduction, linear regression,
machine learning with python] :
Brunton and Kutz, Data Driven Science & Engineering: Machine Learning,
Dynamical Systems, and Control, Cambridge University Press, 2019. ISBN:
978-1108422093
Sebastian Raschka, Machine learning con python. Apogeo. ISBN:
9788850333974
Testi per consultazione / reference books [Python, data analysis]:
Blum, Hopcroft, and Kannan, Foundations of Data Science, Cambridge
University Press, 2020; ISBN: 978-1108485067
Sinan Ozdemir, Data Science: guida ai principi e alle tecniche base della
scienza dei dati, Apogeo. ISBN: 8850334192

Codice insegnamento 21616

INFORMATICA TEORICA 2° anno · 9 CFU · INF/01 · 0 file

Conoscere le capacità computazionali degli automi a stati finiti e la capacità generativa delle grammatiche non contestuali. Rapporti tra modelli deterministici e non deterministici. Capacità di convertire un…

Scheda dell'insegnamento

Obiettivi formativi

Conoscere le capacità computazionali degli automi a stati finiti e la capacità
generativa delle grammatiche non contestuali. Rapporti tra modelli deterministici
e non deterministici. Capacità di convertire un formalismo in un altro
equivalente: ad esempio, grammatiche e automi, automi e espressioni regolari,
automi deterministici e non deterministici. Saper progettare automi che
riconoscono linguaggi fissati. Saper progettare grammatiche che generano
linguaggi fissati. Saper usare automi e grammatiche nella progettazione di
algoritmi. Conoscere l’utilizzo degli automi e delle grammatiche per progettare
compilatori, circuiti digitali, software per esaminare vaste collezioni di testi con
particolare riferimento a possibili esigenze aziendali.

Programma

8 Automi a Stati Finiti. Motivazioni ed applicazioni in particolare all'intelligenza artificiale. I concetti centrali della
teoria degli automi. Definizione di automa a stati finiti deterministico (DFA). Automi riconoscitori.
Rappresentazione di un DFA con grafo degli stati e tabella delle transizioni. Spazio degli stati di un problema e
transione tra gli stati. Modellazione di relazioni e processi attraverso grafi. Relativi algoritmi per la risoluzione
dei problemi.Automi a stati finiti non deterministici (NFA). Teorema di equivalenza tra DFA e NFA. La “subset
construction”. Discussione sulla “state complexity” di DFA e NFA. Applicazioni alle ricerche testuali. Automi con
epsilon-transizioni. Eliminazione delle epsilon-transizioni.
6 Espressioni regolari. Linguaggi regolari. Applicazioni di espressioni regolari. Equivalenza tra linguaggi regolari
e linguaggi riconosciuti da DFA (Teorema di Kleene). Algoritmo di eliminazione degli stati per convertire un
automa in un’espressione regolare. Algoritmo di Berry e Sethi per convertire un’espressione in un automa.
4 Chiusura dei linguaggi regolari rispetto alle operazioni booleane e reverse. Il “pumping lemma” per i linguaggi
regolari. Applicazioni del pumping lemma. Problema di decisione se un linguaggio regolare e' vuoto. Problema
di inclusione ed equivalenza dei linguaggi regolari.
6 Equivalenza tra automi. Problema di decisione dell’equivalenza di due DFA. Minimizzazione di automi
deterministici tramite gli algoritmi classici di minimizzazione. La relazione di indistinguibilita' degli stati. Automa
ridotto. Equivalenza tra automa ridotto e automa minimale. Teorema di Myhill-Nerode. Unicita' dell’automa
deterministico minimale.
6 Grammatiche e Linguaggi Liberi dal Contesto (CF). Motivazioni e descrizione informale. Definizione di
grammatica. Derivazioni delle grammatiche. Linguaggio generato da una grammatica. La gerarchia di
Chomsky. Le grammatiche e i linguaggi CF. Alberi sintattici. Ambiguita' nelle grammatiche e nei linguaggi CF:
grammatiche ambigue, eliminazione delle ambiguita, ambiguita' inerente. Alcune applicazioni delle
grammatiche libere dal contesto.
6 Automi a pila. Definizione, linguaggio accettato. Equivalenza tra automi a pila e grammatiche context-free.
6 Forme normali. Forma normale di Chomsky. Pumping lemma per i linguaggi CF. Applicazioni del pumping
lemma. Proprieta' di chiusura dei linguaggi CF. Problemi di decisione per i linguaggi CF
6 Introduzione storica alla teoria della calcolabilita. La macchina di Turing. Funzioni calcolate da una macchina di
Turing. Linguaggi riconosciuti da una macchina di Turing. La tesi di Turing-Church. Turing e l'intelligenza
artificiale. Test di Turing.
8 La macchina universale di Turing. Esistenza di funzioni non calcolabili. Il problema della fermata di una
macchina di Turing. Problemi decidibili e indecidibili. Problemi intrattabili. P ed NP. Problemi NP-completi.
Modelli particolari di macchine di Turing. Gerarchia di Chomsky e decidibilita.
4 Test di Turing, varianti e sviluppi. Caratteristiche dei problemi (completamente vs parzialmente osservabili;
deterministici vs stocastici; statici vs dinamici; discreti vs continui).
4 Uso di strumenti software per la manipolazione di automi. Determinizzazione, minimizzazione di automi con
Jflap. Uso di strumenti software per la manipolazione di espressioni regolari, trasformazione di una
espressione regolare in Automa e viceversa.
4 Uso di strumenti software per la manipolazione di grammatiche. Alberi di derivazione con Jflap.
4 Pumping lemma per i linguaggi regolari e per i linguaggi context-free con l'uso di Jflap.

Modalità d'esame

La valutazione dell'apprendimento avviene attraverso una prova in itinere scritta
(opzionale per gli studenti) svolta durante la pausa didattica, una prova finale
scritta ed una prova orale.
La prova in itinere ha durata di 1 ora e mezza e consiste nello svolgimento di tre
esercizi su automi ed espressioni regolari. Ogni esercizio avrà una valutazione
da 0/30 a 5/30, la prova risulta superata con una valutazione totale di almeno
9/30.
La prova scritta finale ha la durata di due ore e consiste nello svolgimento di 6
esercizi (tre se la prova in itinere e' superata). Ogni esercizio avrà una
valutazione da 0/30 a 5/30 da sommare eventualmente alla valutazione della
prova in itinere. La prova risulta superata con una valutazione totale di almeno
18/30.
Durante la prova orale lo studente dovrà rispondere a minimo tre domande
poste oralmente, su argomenti del corso con riferimento ai testi consigliati e al
materiale didattico fornito (slide, dispense, esercizi svolti). La prova ha
l’obbiettivo di valutare le conoscenze e le abilità acquisite, la comprensione degli
argomenti, e l’acquisizione del linguaggio specifico.
Alla prova orale la soglia della sufficienza sarà raggiunta se lo studente
mostrerà di conoscere i concetti fondamentali e sarà in grado di esporli ed
argomentarli autonomamente. Al di sotto di tale soglia, l’esame risulterà non
superato.
I livelli di valutazione saranno proporzionali alle abilità di linguaggio,
all’esposizione corretta e dettagliata degli argomenti e alla capacità di applicare,
collegare e contestualizzare i concetti.
In particolare si individuano quattro fasce di valutazione della prova orale:
18-21/30 lo studente espone gli aspetti essenziali degli argomenti con
linguaggio semplice, sa applicare i concetti a problemi semplici solo se guidato,
contestualizza solo se guidato,
22-24/30 lo studente espone tutti gli aspetti degli argomenti con linguaggio
adeguato, sa applicare autonomamente i concetti a problemi semplici,
contestualizza solo se guidato,
25-27/30 lo studente espone tutti gli aspetti degli argomenti con linguaggio
adeguato, sa applicare i concetti a tutti i problemi proposti, contestualizza solo
se guidato,
28-30/30 lo studente espone tutti gli aspetti degli argomenti con linguaggio
adeguato, sa applicare i concetti a tutti i problemi proposti, contestualizza
autonomamente.
La lode verrà attribuita agli studenti valutati nella fascia 28-30 e capaci di
dimostrare i teoremi esposti a lezione.
La valutazione avviene in trentesimi e sarà la media delle valutazioni delle due
prove (scritta itinere+finale e prova orale).
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

J. E. Hopcroft, R. Motwani, J. D. Ullman, Automi, Linguaggi e Calcolabilita,
Addison-wesley (PearsonEducation Italia) III edizione 2009. ISBN:
9788891907806

Codice insegnamento P682803556

LINGUAGGI DI PROGRAMMAZIONE 2° anno · 9 CFU · INF/01 · 0 file

Fornire competenze di base e avanzate, sia metodologiche che tecniche, sui paradigmi dei linguaggi di programmazione, in particolar modo sul paradigma orientato agli oggetti e su quello funzionale.

Scheda dell'insegnamento

Obiettivi formativi

Fornire competenze di base e avanzate, sia metodologiche che tecniche, sui
paradigmi dei linguaggi di programmazione, in particolar modo sul paradigma
orientato agli oggetti e su quello funzionale.

Programma

2 Introduzione e Primi Passi in Java: Sintassi di base - Primo programma - Commenti al codice - Letterali -
Dichiarazione di variabili - Identificatori - Tipi primitivi: byte, short, int, long, float, double, boolean, char -
Operatori unari, binari, condizionali e di concatenazione
3 Le classi Java I: Classi e oggetti - Attributi e metodi - Convenzioni su maiuscole e minuscole - Il metodo main -
Costruttori - L’operatore new - Il costruttore di default - Riferimenti - Confronto di riferimenti - Variabili di
istanza e variabili locali - Accesso ad attributi e metodi delle classi con dot notation - La Javadoc.
3 Le classi Java II: I metodi print, println e printf - Incapsulamento dei dati - Interfaccia pubblica e interfaccia
privata - Modificatori di visibilita' public e private - Il riferimento implicito this - Deallocazione automatica della
memoria e Garbage Collector - Firma di un metodo - Overloading di metodi - Overloading di costruttori -
Invocazione di altri costruttori mediante "this()" - Variabili final
3 Le classi Java III: Attributi static - Metodi static - Organizzazione e compilazione di un package - Visibilita'
package-private - Creazione di file jar eseguibili
2 Controllo del flusso di esecuzione: Costrutti di selezione, iterazione e salto: if, switch, while, do-while, for,
break, continue, return - Il for esteso
6 Stringhe e Wrapper: Il tipo String - Istanziazione di stringhe - Il pool di stringhe - La codifica Unicode per i
caratteri - L’operatore di concatenazione - Il metodo equals per le stringhe - Il metodo compareTo per le
stringhe - I metodi per le stringhe: startsWith e endsWith, length, substring, contains - toLowerCase e
toUpperCase, trim, charAt, indexOf, lastIndexOf, replaceFirst, replaceAll, valueOf - Espressioni regolari - I
metodi che usano le espressioni regolari: matches, replaceFirst, replaceAll, split - La classe StringBuilder - I
metodi append, insert, delete, deleteCharAt, replace, reverse - La classe Scanner e i suoi metodi: next,
nextLine, nextInt, nextDouble - Le classi wrapper - Boxing e unboxing - I metodi isDigit e isLetter della classe
Character - I metodi parseInt, parseShort, parseFloat - I metodi toBinaryString, toOctalString e toHexString
4 Array e ArrayList: Creazione e inizializzazione di un array - Array di riferimenti a oggetti - L’attributo length - Il
for esteso sugli array - I metodi della classe Arrays - La classe ArrayList - Cenni su Generics e classi
parametriche - I metodi per gli ArrayList: add, size, get, set, remove, indexOf, lastIndexOf, contains, toArray - I
metodi della classe Collections
3 Metodi Universali: I metodi presenti in tutte le classi - I metodi equals, toString e hashCode - Overriding del
metodo toString - Overriding del metodo equals - Funzioni hash - Collisioni e hashing perfetto - Bucket e
tabelle hash - Overriding del metodo hashCode - Mutua compatibilita' di questi overriding.
4 Ereditarieta' I: Riutilizzazione e distribuzione dei programmi Java - Sottoclassi e superclassi - La parola chiave
extends - Ereditarieta' di attributi e metodi - Il modificatore protected - Overriding di metodi - L’annotazione
@Override - Attributi adombrati (shadowing) - Classi e metodi final
4 Ereditarieta' II: Ereditarieta' e costruttori - Invocare costruttori della superclasse con "super()" - Il riferimento
super - Ereditarieta' e membri static - Ereditarieta' singola e Diamond Problem - Subtyping
4 Polimorfismo: Type checking statico - Binding dinamico - Definizione di polimorfismo - polimorfismo per metodi
e polimorfismo per dati - array polimorfi - metodi virtuali e attributi adombrati - Il costrutto instanceof
6 Classi astratte e interfacce: Il modificatore abstract - Classi astratte e sottoclassi concrete - Classi astratte e
membri static - Definizione e dichiarazione di un'interfaccia - Contenuto di un’interfaccia - Implementare
un'interfaccia - Conflitto di nomi di variabili tra un’interfaccia e una classe che la implementa - Implementazioni
parziali di interfacce in classi astratte - Estensione di interfacce - Ereditarieta' multipla per interfacce - Diamond
problem, shadowing, overriding e overloading nell’ereditarieta' multipla per interfacce - Riferimenti a
un'interfaccia - Interfacce ed ereditarieta' - Interfacce e polimorfismo - Focus sull’interfaccia Comparable -
Comparatori e interfaccia Comparator - Implementazione di comparatori - Classi interne e classi interne
anonime - Implementazione di un’interfaccia in una classe interna anonima - Tipi enumerativi
6 Input/output: Flussi (stream) di dati - Dati in ingresso e dati in uscita - Flussi di caratteri e flussi di byte - La
classe File - I metodi della classe File: delete, exists, getAbsolutePath, getName, getPath, isDirectory, isFile,
length, list, mkdir e renameTo - Usare Scanner per leggere dati da un file testuale - I metodi hasNext e
hasNextLine, next e nextLine - Gestione di flussi di byte: le classi astratte InputStream e OutputStream e le
loro sottoclassi FileInputStream e FileOutputStream - I metodi read e write per FileInputStream e
FileOutputStream - Gestione di flussi di caratteri: le classi astratte Reader e Writer e le loro sottoclassi - I
metodi read e write per FileReader e FileWriter - Bufferizzazione: le classi BufferedReader e BufferedWriter -
La classe PrintWriter Il metodo printf - Filtraggio di classi - Flussi di oggetti - Le classi ObjectInputStream e
ObjectOutputStream - Serializzazione e deserializzazione - L’interfaccia Serializable - I metodi readObject e
writeObject - Serializzazione e membri static - Il modificatore transient - Memorizzazione dei dati di un
programma su file - Gestione delle eccezioni - Eccezioni controllate e non - Il costrutto try/catch - Il try with
resources
6 Programmazione generica - Tipi parametrizzati - Collezioni - Java Collection Framework - Le interfacce
Iterable, Collection, Set e List - Le classi HashSet, TreeSet, ArrayList e LinkedList - Le interfacce Map e
SortedMap - Le classi HashMap e TreeMap
4 Programmare un'interfaccia grafica per un'applicazione Java - AWT e Swing - Delegation model e gestione
degli eventi - Ascoltatori - I componenti di Swing
6 Interfacce funzionali - Espressioni lambda - Method references - Stream - La streaming API di Java -
Operazioni intermedie e terminali - Operazioni di aggregazione e di riduzione - La classe Collectors
6 Il paradigma di programmazione funzionale - Cenni storici - Funzioni di ordine superiore - Currying - Chiusure

  • Trasparenza referenziale (determinismo, assenza di effetti collaterali, assenza di mutazioni di stato) -
    Valutazione lazy e valutazione eager - Java e la programmazione funzionale - Stile funzionale e
    programmazione ricorsiva in Java - Programmazione funzionale pura in Java: tecniche e limiti

Modalità d'esame

L'esame finale consiste in una prova orale. La prova orale consiste in un
colloquio che verte ad approfondire il livello di profondità dell'acquisizione dei
concetti teorici introdotti durante il corso. Concorrono a determinare il voto la
chiarezza e correttezza delle risposte al colloquio orale.
Fasce di valutazione:
18-20: Conoscenze minime ma adeguate sul programma
21-24: Conoscenze di base adeguate ma non complete o approfondite
24-27: Buone conoscenze su tutto il programma
28-30 e lode: Ottime conoscenze su tutto il programma
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

1) C. De Sio Cesari, Il nuovo Java. Guida completa alla programmazione
moderna, Hoepli, ISBN: 9788820399306 (per la parte su Java - for the part on
Java);
2) C. Horstmann, Concetti di informatica e fondamenti di Java, VII edizione,
Apogeo, ISBN: 9788891639431; (per la parte su Java - for the part on Java);
3) Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, Modern Java in Action:
Lambdas, Streams, Functional and Reactive Programming, I edizione, Manning,
ISBN: 9781617293566 (per la parte su programmazione funzionale - for the part
on functional programming)

Codice insegnamento P170421479

MACHINE LEARNING 2° anno · 7 CFU · INF/01 · 0 file

Obiettivo del corso e' fornire le basi teoriche e pratiche sui modelli di machine learning per l'analisi di dati eterogenei, con particolare riferimento alla loro classificazione supervisionata e non supervisionata. Le…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo del corso e' fornire le basi teoriche e pratiche sui modelli di machine
learning per l'analisi di dati eterogenei, con particolare riferimento alla loro
classificazione supervisionata e non supervisionata. Le lezioni comprendono
anche l’implementazione di modelli ad apprendimento profondo. Lo strumento di
sviluppo utilizzato e' il Python.

Programma

4 Introduzione al corso, richiami di algebra lineare, computazione numerica, ottimizzazione, probabilità
4 Tipologie di apprendimento automatico, valutazione delle perfornmance, paradigmi di apprendimento,
generalizzazione, regolarizzazione, cross validation, machine learning e stima, decomposizione bias-varianza
8 Modelli lineari: regressione lineare multipla, analisi discriminante lineare e di Fisher, analisi discriminante
quadratica, analisi della correlazione canonica, algoritmo del percettrone, regressione logistica, regressione
ridge, lasso.
8 Metodi kernel: kernel, kernel tricks, kernel ridge regression, kernelizzazione dei metodi lineari, dimensione VC,
versione duale dell’algoritmo del percettrone, iperpiano di separazione ottimale e sua formulazione lagrangiana.
4 Macchine a vettori di supporto (SVM): caso di separabilità lineare e non lineare, variabili slack, SVM e
classificazione one class, funzioni kernel per dati strutturati.
4 Reti neurali superficiali: funzioni di attivazione, percettrone, delta rule, percettrone come separatore lineare, reti
neurali multistrato, percettrone multistrato, retropropagazione, reti probabilistiche, reti competitive
8 Reti neurali profonde: funzioni di attivazione, tipo di livelli, tecniche di regolarizzazione delle reti profonde, reti
convoluzionali, reti ricorrenti, architetture codificatore decodificatore, autocodificatori.
4 Modelli supervisionati non parametrici: Classificatore K- vicini e alberi di decisione
4 Modelli ensemble: boosting, bagging, gradient boosting, ada-boost, random forest.

4 Utilizzo delle librerie numpy, scikitLearn, pandas, tensorflow, keras.
4 Applicazione dei modelli di machine learning lineari e ensemble a problemi di classificazione supervisionata e
non supervisionata su dataset reali.
4 Applicazione dei modelli Kernel a problemi di classificazione supervisionata e non supervisionata su dataset
reali.
4 Applicazione delle reti neurali superficiali e profonde a problemi di classificazione supervisionata e non
supervisionata su dataset reali.

Modalità d'esame

Progetto, prova orale con discussione del progetto.
Obiettivo del progetto e' quello di verificare che l’esaminando/a sia in grado di
progettare un sistema di analisi dei dati basato sui modelli di machine learning
trattati a lezione, che abbia acquisito competenza interpretativa e autonomia di
giudizio su applicazioni concrete.
Ciascun progetto e' individuale e viene assegnato al termine del corso, con
almeno una settimana di anticipo rispetto alla data di svolgimento della prova
orale.
Obiettivo della prova orale e' verificare che l’esaminando/a abbia conoscenza e
comprensione degli argomenti, e della teoria dei modelli adottati nel corso.
La prova orale consiste in una prima fase di presentazione orale del progetto
con discussione e sessione di domande e risposte, seguita da un'interrogazione
orale finalizzata ad accertare la preparazione dell’esaminando/a sui diversi
argomenti affrontati nel corso. Il numero minimo di domande fatte durante la
prova orale e' 2.
Per superare l'esame, ottenere quindi un voto non inferiore a 18/30,
l’esaminando/a deve dimostrare un raggiungimento elementare degli obiettivi.
Gli obiettivi raggiunti si considerano elementari quando l’esaminando/a dimostra
di avere svolto in modo soddisfacente l’elaborato assegnato, ha acquisito una
conoscenza di base degli argomenti descritti nel programma, e' in grado di
operare minimi collegamenti fra di loro, dimostra di avere acquisito una limitata
autonomia di giudizio; il suo linguaggio e' sufficiente a comunicare con gli
esaminatori.
Il punteggio finale e' determinato dalla media dei punteggi attribuiti al progetto,
alla discussione del progetto.
Le fasce di punteggio corrispondono ai giudizi qualitativi seguenti:
18-20: la conoscenza della materia e lo sviluppo progettuale sono sufficienti;
21-23: la conoscenza della materia e lo sviluppo progettuale sono discreti;
24-25: la conoscenza della materia e lo sviluppo progettuale sono buoni;
26-27: la conoscenza della materia e lo sviluppo progettuale sono molto buoni;
28-30: la conoscenza della materia e lo sviluppo progettuale sono ottimi.
La lode e' riservata agli studenti che hanno svolto l’elaborato proposto
adottando soluzioni autonome, originali ed efficaci, che hanno acquisito la piena
conoscenza degli argomenti del programma dimostrando di saper applicare la
conoscenza acquisita anche in contesti differenti /nuovi/avanzati rispetto a quelli
propri dell’insegnamento, che si esprimono con competenza lessicale anche
nell’ambito del linguaggio specifico di riferimento e che sono infine in grado di
elaborare ed esprimere giudizi autonomi fondati sulle conoscenze acquisite.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

Testi di riferimento (Reference Books):
1) Christopher M. Bishop, Pattern Recognition And Machine Learning, 2006,
ISBN 0387310732, Springer (chapters 1, 2, 3, 4, 14).
2) Michael Berthold, David J. Hand, Intelligent Data Analysis: An Introduction,
2003, ISBN 3642077074, Springer (chapters 5, 8).
3) Nello Cristianini, John Shawe-Taylor, An Introduction to Support Vector
Machines and Other Kernel-based Learning Methods, 2000, ISBN 0521780193,
Cambridge University Press (chapters 1, 2, 3, 4, 5, 6, 8).
4) Ian Goodfellow, Yoshua Bengio and Aaron Courville, Deep Learning, 2016,
ISBN 0262035613, MIT Press, (chapters 8, 9, and 10).

Codice insegnamento 17878

PRINCIPI DI INTELLIGENZA ARTIFICIALE 2° anno · 7 CFU · INF/01 · 0 file

L’obiettivo principale del corso e fornire agli studenti un panorama completo delle tecniche di rappresentazione della conoscenza e automazione del ragionamento. Gli studenti conosceranno la teoria, le caratteristiche…

Scheda dell'insegnamento

Obiettivi formativi

L’obiettivo principale del corso e fornire agli studenti un panorama completo
delle tecniche di rappresentazione della conoscenza e automazione del
ragionamento. Gli studenti conosceranno la teoria, le caratteristiche e i limiti dei
principali modelli di rappresentazione della conoscenza e del planning.

Programma

4 FONDAMENTI: Introduzione al corso. Cos'è l'intelligenza artificiale. Intelligenza artificiale: ricerca e
rappresentazione della conoscenza.
8 SPAZI DI RICERCA - RICERCA CIECA: Depth first, breadth first, iterative deepening, random search. Esercizi
e applicazioni.
8 SPAZI DI RICERCA - RICERCA INFORMATA: hill-climbing, best-first, A* e sue varianti. Esercizi e applicazioni.
8 SPAZI DI RICERCA - RICERCA CON AVVERSARIO: min-max, pruning alfa-beta. Esercizi e applicazioni.
8 OTTIMIZZAZIONE: Tecniche di ottimizzazione. Effetto orizzonte e tecniche di soluzione.
6 PLANNING: Il problema. Linguaggi per il Planning.
6 ONTOLOGIE: Ontologie e grafi della conoscenza. Linguaggi per la rappresentazione delle ontologie (es., RDF,
ecc.). Database per la rappresentazione della conoscenza e utilità (es., Neo4J, ecc.).

8 PRACTICE: Costruire un pianificatore automatico per uno specifico linguaggio (es., STRIPS).
8 COSTRUIRE UN'ONTOLOGIA: Esempi pratici e applicazioni.

Modalità d'esame

L'esame prevede una prova orale.
La prova orale consiste in un colloquio, volto ad accertare il possesso delle
competenze e delle conoscenze disciplinari previste dal corso. L’esaminando
dovra rispondere a domande su tutte le parti oggetto del programma. Le
domande vengono poste con l’obiettivo di analizzare la capacita del candidato
di padroneggiare la teoria, le metodologie e le tecniche di Knowledge
Representation and Reasoning.
Fasce di valutazione:
18-20: Conoscenze minime ma adeguate sul programma
21-24: Conoscenze di base adeguate ma non complete o approfondite
24-27: Buone conoscenze su tutto il programma
28-30 e lode: Ottime conoscenze su tutto il programma
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Stuart J. Russell, Peter Norvig. Intelligenza artificiale. Un approccio moderno.
(Vol. 1). Terza edizione. Pearson.

Codice insegnamento 24714

SISTEMI OPERATIVI 2° anno · 6 CFU · ING-INF/05 · 0 file

Il corso ha come obiettivo formativo l'insegnamento delle seguenti nozioni: fondamenti di un sistema operativo struttura di un sistema operativo gestione dei processi gestione della memoria gestione dello spazio dati…

Scheda dell'insegnamento

Obiettivi formativi

Il corso ha come obiettivo formativo l'insegnamento delle seguenti nozioni:

  • fondamenti di un sistema operativo
  • struttura di un sistema operativo
  • gestione dei processi
  • gestione della memoria
  • gestione dello spazio dati
  • rappresentazione binaria dell'informazione
    Applicare la teoria dell'informatica e della matematica per risolvere problemi e
    presentare in modo esauriente i risultati e i metodi della soluzione a un pubblico
    professionale o non professionale.
    Prevedere il comportamento dei sistemi in caso di eventi casuali utilizzando le
    conoscenze di probabilità e previsione e informare gli utenti del loro potenziale
    comportamento.
    Valutare la sicurezza di un sistema utilizzando le conoscenze di riservatezza,
    disponibilità e integrità con una comprensione dei rischi, delle minacce, delle
    vulnerabilità e dei metodi di attacco, e mettere in relazione l'impatto sociale ed
    etico con i componenti del sistema.

Programma

2 Descrizione delle principali architetture e componenti dei moderni hardware e sistemi operativi. Interfacce
utente. API e chiamate di sistema. Gestione dei processi e comunicazioni.
4 Processi e thread in dettaglio. Schedulazione e sincronizzazione. Processori single- e multi-core. Concorrenza.
Modelli per il multi-threading. Gruppi di thread.
4 Principio di localita'. Sistemi con e senza prelazione. Confronto tra i principali algoritmi di scheduling.
Bilanciamento del carico. Scheduling real-time.
4 Sezione critica. Soluzione di Peterson. Barriere; istruzioni atomiche, lock mutex; semafori; monitor.
4 Problemi classici di sincronizzazione: produttore-consumatore; lettori-scrittori; filosofi a cena. Memoria
transazionale.
4 Stallo, stallo attivo e inedia. Grafo di assegnazione delle risorse. Prevenzione, aggiramento e rilevamento degli
stalli. Ripristino dopo lo stallo.
4 Memoria centrale. Indirizzi logici e fisici. Caricamento, allocazione e protezione. Frammentazione.
Paginazione. Avvicendamento.
4 Memoria virtuale. Algoritmi per la sostituzione delle pagine. Pagina mancante. Thrashing. Working set.
Allocazione per il kernel.
4 Memoria di massa. HDD, SSD, NAND flash. Scheduling. Rilevamento e correzione di errori. Struttura RAID.
4 Struttura e allocazione del file system. File e directory. Protezione. Gestione dello spazio libero. Ripristino.
2 Evoluzione storica dei sistemi operativi

2 Interfaccia grafica e interfaccia a riga di comando. Principio di località e simulazione dei page fault.
2 Processi, thread, fork-join. Simulazione degli algoritmi di schedulazione.
2 Problemi classici di sincronizzazione.
2 Semafori e monitor.
2 Gestione avanzata dei file binari.
2 sicurezza dei sistemi operativi
4 Calcolo distribuito tramite thread

Modalità d'esame

Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.
Prova di pratica e orale per accertare il possesso delle competenze e delle
conoscenze disciplinari previste dal corso. Saranno anche valutate la maturita'
del candidato e la sua chiarezza espositiva.
Eccellente (29-30 / 30 e lode) - eccellente conoscenza degli argomenti,
eccellente proprieta' di linguaggio, buona capacita' analitica, lo studente e' in
grado di applicare le conoscenze per risolvere autonomamente i problemi
proposti, fornendo soluzioni originali.
Ottimo (27-28) - ottima padronanza degli argomenti con discreta proprieta' di
linguaggio, lo studente e' in grado di applicare le conoscenze per risolvere
senza difficolta' i problemi proposti.
Buono (24-26) - buona padronanza degli argomenti con discreta proprieta' di
linguaggio, lo studente e' in grado di applicare le conoscenze per risolvere i
problemi proposti.
Sufficiente (18-23) - lo studente non ha piena padronanza degli argomenti
principali ma ne possiede le conoscenze; appena sufficiente la proprieta' di
linguaggio con scarsa capacita' di applicare autonomamente le conoscenze
acquisite.
Insufficiente - lo studente non possiede una conoscenza accettabile dei
contenuti degli argomenti trattati nell'insegnamento.

Testi di riferimento

Qualsiasi testo di livello universitario che descriva tutti gli argomenti trattati
durante il corso. Le lezioni saranno supportate da presentazioni che NON
sostituiscono i seguenti testi consigliati. / Any university-level book that
describes all the topics discussed during the course. The lessons will be
supported by presentations that do NOT supersede the following recommended
texts.
Testo principale / main textbook
Silberschatz A., Galvin P.B., Gagne G. "Sistemi Operativi: concetti ed esempi",
10 Ed. Pearson, 2019. ISBN-10:8891904554
Per l'attivita' di laboratorio / Lab activities
Kerrisk M. "The Linux Programming Interface: A Linux and UNIX System
Programming Handbook", No Starch Press, 2010. ISBN-10:1593272200
Per consultazione / Further reading
Tanenbaum A.S.. Bos H. "I moderni sistemi operativi", 4 Ed. Pearson, 2019.
ISBN-10:8891906255

Codice insegnamento P902596568

SVILUPPO WEB, MOBILE ED ELEMENTI DI FRONT-END 2° anno · 7 CFU · INF/01 · 0 file

Il corso si propone di introdurre gli studenti ai concetti di base per la programmazione Web e Mobile. Lo studente dovrà saper sviluppare un'applicazione significativa individuando con chiarezza la logica applicativa,…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di introdurre gli studenti ai concetti di base per la
programmazione Web e Mobile. Lo studente dovrà saper sviluppare
un'applicazione significativa individuando con chiarezza la logica applicativa,
l'interazione con le basi di dati e le interfacce richieste dai requisiti. Inoltre dovrà
imparare a pianificare il lavoro secondo i canoni dello sviluppo dei progetti:
lavoro in team, definizione degli obiettivi e delle fasi di sviluppo.

Programma

6 FONDAMENTI: Presentazione del corso. Richiami su Programmazione Orientata agli Oggetti. Protocolli (HTTP
ecc.). Storia e architettura del WWW. Gli standard implementativi del Web. Le ragioni della scalabilità del Web.
6 Servizi Web e relative applicazioni.
6 Progettazione di applicazioni Web nei linguaggi di riferimento (Java, Python).
6 Introduzione ai servizi Mobile e differenza rispetto ai servizi Web.
6 Progettazione di applicazioni Mobile.
6 NodeJS, React, elementi fondamentali per la progettazione di frontend.
6 Interfacciamento con DB. Interconnessione di diverse componenti architetturali.
6 Progettazione e implementazione di architetture complesse per il Web/Mobile, inclusi elementi di frontend.

5 Progettazione e implementazione di applicazioni Web.
5 Progettazione e implementazione di applicazioni Mobile.
6 Progettazione e implementazione di sistemi software complessi che includono anche elementi di frontend.

Modalità d'esame

L’esame è composto da due parti: (1) stesura di un progetto che rispecchi il
livello di difficoltà delle applicazioni del mondo reale, e (2) prova orale. La
stesura del progetto viene svolta in team, in parte durante alcune ore di
laboratorio e in parte durante il proprio tempo di studio individuale. La
valutazione del progetto avviene attraverso delle revisioni ed una presentazione
finale, a cui tutto il team deve partecipare, e che hanno lo scopo di verificare le
capacita' acquisite dallo studente nell'applicazione dei principi della
programmazione web e mobile, lavoro in team, autonomia di giudizio. La
valutazione del progetto è espressa in trentesimi. La prova orale verte sui temi
trattati durante il corso e la valutazione, anche in questo caso, viene espressa in
trentesimi.
La votazione finale è data dalla media fra i due voti ottenuti nelle due parti che
compongono la prova d'esame. In particolare, una valutazione superiore a 28/30
indica un'ottima conoscenza degli argomenti del corso e un'eccellente capacità
di progettare seguendo i principi appresi. Nel caso del conseguimento dello
score massimo (30), il docente si riserverà la possibilità di attribuire anche la
lode a quegli studenti che dimostreranno di avere acquisito la capacità di
elaborare, in assoluta autonomia, efficaci ed efficienti soluzioni a problemi
particolarmente complessi. Una valutazione tra 24/30 e 27/30 indica che le
capacità progettuali sono buone, ma potrebbero essere migliorate, oppure che
la conoscenza delle tematiche dell'insegnamento potrebbe essere più
approfondita. Una valutazione inferiore a 24/30 indica che sia capacità
progettuali che conoscenza delle tematiche potrebbero essere decisamente
migliorati.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Testo consigliato/Suggested Book: Practical Web Development: Learn CSS,
JavaScript, PHP, and more with this vital guide to modern web development,
Paul Wellens. 2015 - 9781782175919.
Testo di approfondimento/Additional Book: Node.js Web Development: Server-
side web development made easy with Node 14 using practical examples, David
Herron. 2020 - 9781838987572.

Codice insegnamento 24060

INGEGNERIA E SICUREZZA DEL SOFTWARE 3° anno · 6 CFU · INF/01 · 0 file

Il corso si propone di introdurre gli studenti ai concetti di base dell’ingegneria del software e allo sviluppo di applicazioni software, utilizzando la metodologia Agile Unified Process (UP), che sfrutta il linguaggio…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di introdurre gli studenti ai concetti di base dell’ingegneria del
software e allo sviluppo di applicazioni software, utilizzando la metodologia Agile
Unified Process (UP), che sfrutta il linguaggio di modellazione UML. Lo studente
dovrà saper sviluppare un'applicazione significativa individuando con chiarezza
la logica applicativa, l'interazione con le basi di dati e le interfacce richieste dai
requisiti. Inoltre dovrà imparare a pianificare il lavoro secondo i canoni dello
sviluppo dei progetti: lavoro in team, definizione degli obiettivi e delle fasi di
sviluppo.

Programma

6 FONDAMENTI: Presentazione del corso. Richiami su Programmazione Orientata agli Oggetti. Sviluppo di
software professionale, best practices e versioning. Modelli dei processi software, attività di processo,
miglioramento dei processi. Sviluppo software con i metodi agili. Tecniche di sviluppo agile. Project
Management Agile: Scrum. Esempi pratici di progettazione secondo metodologia plan-driven (a cascata,
usando Gantt) e Agile (Scrum, con storie utente).
6 REQUISITI, ANALISI E PROGETTAZIONE. Tecniche di sviluppo agile su larga scala. Esempi e discussione.
Elementi di Ingegneria dei Requisiti. Storie e Scenari Utente. Unified Modeling Language (UML). Casi d’uso.
Modelli di sistema e principali diagrammi (caso d’uso, sequenza, stato, classe).
6 DESIGN PATTERN: La teoria dei design pattern. Pattern della “Gang of Four” (GoF). Relazioni tra i design
pattern. Catalogo completo dei pattern GoF modellati in UML e implementati in Java. Inversion of Control.
Dependency Injection. Architetture software basate su pattern. Sviluppo sistematico di software basato su
pattern.
2 TESTING: Progettazione guidata da test. Test di Sviluppo (unità, componenti, integrazione sistema). Test delle
Release. Test degli Utenti.
4 SECURITY AND DISTRIBUTED: Open Web Application Security Project (OWASP) e lista delle applicazioni a
rischio. Esempi di progettazione non sicura del software. Principi per la progettazione di software sicuro.
Secure design pattern. Sistemi distribuiti. Architetture Client-Server, Master-Slave, Peer-to-Peer.

6 DESIGN PATTERN: Esercizi e implementazione su utilizzo dei design pattern.
6 TESTING: Applicazione pratica su esempi e implementazione. Progettazione guidata da test: JUnit e
applicazioni.
6 SECURITY BY DESIGN: Esercizi e applicazioni.
6 PROGETTAZIONE DI UN CASO DI STUDIO: Distinzione tra requisiti funzionali e non funzionali nel caso
specifico del progetto assegnato.
Disegno logico architetturale del sistema.
6 PROGETTAZIONE DI UN CASO DI STUDIO: Formulazione delle user story (nella forma WHO, WHAT, WHY)
per il progetto assegnato. Definizione e dimensionamento dello Sprint. Sprint backlog.
6 PROGETTAZIONE DI UN CASO DI STUDIO: Sprint Poker planning. Progettazione di Web Applications,
inclusi framework e tecnologie da utilizzare.
6 PROGETTAZIONE DI UN CASO DI STUDIO: Applicazione della Metodologia Agile: prima si progettano le
unità usando i design pattern, poi si scrivono i test in Junit, poi si scrive il codice delle unità; alla fine di ogni
Sprint si effettua il test di sistema, che avrà via via funzionalità più articolate.
6 PROGETTAZIONE DI UN CASO DI STUDIO: Proseguimento di progettazione e sviluppo, completando
almeno uno sprint. Cambio di specifiche. Refactoring.

Modalità d'esame

L’esame è composto da due parti: (1) stesura di un progetto che rispecchi il
livello di difficoltà delle applicazioni del mondo reale, e (2) prova orale. La
stesura del progetto viene svolta in team, in parte durante alcune ore di
laboratorio e in parte durante il proprio tempo di studio individuale. La
valutazione del progetto avviene attraverso delle revisioni ed una presentazione
finale, a cui tutto il team deve partecipare, e che hanno lo scopo di verificare le
capacita' acquisite dallo studente nell'applicazione dei principi dell'Ingegneria
del Software, lavoro in team, autonomia di giudizio. La valutazione del progetto
è espressa in trentesimi. La prova orale verte sui temi trattati durante il corso e
la valutazione, anche in questo caso, viene espressa in trentesimi.
La votazione finale è data dalla media fra i due voti ottenuti nelle due parti che
compongono la prova d'esame. In particolare, una valutazione superiore a 28/30
indica un'ottima conoscenza degli argomenti del corso e un'eccellente capacità
di progettare seguendo i principi appresi. Nel caso del conseguimento dello
score massimo (30), il docente si riserverà la possibilità di attribuire anche la
lode a quegli studenti che dimostreranno di avere acquisito la capacità di
elaborare, in assoluta autonomia, efficaci ed efficienti soluzioni a problemi
particolarmente complessi. Una valutazione tra 24/30 e 27/30 indica che le
capacità progettuali sono buone, ma potrebbero essere migliorate, oppure che
la conoscenza delle tematiche dell'insegnamento potrebbe essere più
approfondita. Una valutazione inferiore a 24/30 indica che sia capacità
progettuali che conoscenza delle tematiche potrebbero essere decisamente
migliorati.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Testo di riferimento/Reference book: Ingegneria del Software, 10/Ed. Con
MyLab, Ian Sommerville, Pearson, ISBN: 9788891902245 (2017).
Testo di approfondimento/Additional Book: Patterns of Enterprise Application
Architecture, Martin Fowler, Addison Wesley (2003).

Codice insegnamento P929763691

LABORATORIO DI ALGORITMI 3° anno · 6 CFU · INF/01 · 0 file

Obiettivo del corso è quello di dare gli strumenti teorici e pratici per progettare e realizzare soluzioni efficienti a problemi complessi. A tale scopo, si è scelto di svolgere l’attività di laboratorio tramite…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo del corso è quello di dare gli strumenti teorici e pratici per progettare e
realizzare soluzioni efficienti a problemi complessi. A tale scopo, si è scelto di
svolgere l’attività di laboratorio tramite implementazioni in linguaggio C++.
Vengono inoltre discusse alcune applicazioni reali in cui gli algoritmi trattati
vengono comunemente utilizzati. Gli studenti avranno anche modo di usare
alcune conoscenze acquisite durante il loro percorso formativo, con lo scopo di
concentrarsi in modo approfondito sui dettagli implementativi delle strutture dati
complesse, sull'analisi della complessità e le tecniche per implementare in modo
efficiente un algoritmo in relazione alle risorse di calcolo a disposizione.

Programma

4 Algoritmi e loro implementazione:
fase progettuale, fase realizzativa. Analisi di algoritmi, modelli computazionali e livelli di memoria.
3 Problema dell'ordinamento in un modello a 2-livelli di memoria: complessita' I/O e lower bound.
6 Implementazioni efficienti di dizionari. Alberi di ricerca. Esempio di struttura dati cache oblivious: B-alberi.
8 Strutture dati per rappresentare grafi: matrici di adiacenza e liste di adiacenza. Implementazioni efficienti di
algoritmi su grafi: problema del minimo albero ricoprente (MST). Union find e code a priorita'. Algoritmo di
Kruskal, Algoritmo di Prim: implementazioni e valutazioni sperimentali. Algoritmi per la computazione del MST
in memoria semiesterna. Algoritmi per i cammimi minimi in un grafo orientato.
5 Il problema dell'ordinamento di stringhe. Radix sort. Multi-key Quicksort.
4 Strutture dati per la memorizzazione e la ricerca di stringhe. Il problema della ricerca di pattern in stringhe.
2 Operazioni su polinomi. Algoritmi per la moltiplicazione veloce di polinomi.

6 Introduzione all'uso del linguaggio C++ orientato agli oggetti
6 Implementazioni di alberi di ricerca
4 Implementazione di grafi e visite di grafi
6 Implementazione di algoritmi per trovare il minimo albero ricoprente
6 Implementazione di algoritmi e strutture dati per l'ordinamento e la ricerca di stringhe
4 Implementazione di algoritmi per la moltiplicazione di polinomi. Uso della FFT.

Modalità d'esame

Gli studenti dovranno affrontare una prova scritta in cui saranno somministrate 5
domande sugli argomenti affrontati durante il corso. E' prevista anche una prova
pratica, che richiede la progettazione di gruppo e l'implementazione, mediante
l'uso del linguaggio C++, di algoritmi e le opportune strutture dati per la
soluzione di un problema assegnato. Con tale attività si intende verificare le
competenze acquisite, ovvero la capacità di applicare le conoscenze maturate
durante il corso, la capacità di interazione e di lavoro in gruppo. Durante la
prova orale, verranno discusse la prova scritta e la prova pratica e ciascuno
studente avrà modo di descrivere le soluzioni proposte mostrando le proprie
capacità di comunicazione e di uso del linguaggio proprio della disciplina. La
valutazione della prova è espressa in trentesimi in accordo alla tabella di
valutazione descritta di seguito.
Tabella di valutazione
Valutazione: Eccellente
Voto: 30 - 30 e lode
Esito: Ottima conoscenza degli argomenti, ottima proprietà di linguaggio, buona
capacità analitica, efficace capacità di interazione e di lavoro in gruppo, lo
studente è in grado di applicare in modo proficuo le conoscenze per risolvere i
problemi proposti.
Valutazione: Molto buono
Voto: 27-29
Esito: Buona padronanza degli argomenti, piena proprieta' di linguaggio, buona
capacita' di interazione e di lavoro in gruppo, lo studente e' in grado di applicare
in modo adeguato le conoscenze per risolvere i problemi proposti.
Valutazione: Buono
Voto: 24-26
Esito: Buona conoscenza di base dei principali argomenti, discreta proprieta' di
linguaggio, discreta capacita' di lavoro in gruppo, con buona capacita' di
applicare in modo autonomo le conoscenze alla soluzione dei problemi proposti.
Valutazione: Soddisfacente
Voto: 21-23
Esito: Discreta conoscenza degli argomenti principali dell'insegnamento,
soddisfacente proprieta' di linguaggio, discreta capacita' di saper applicare in
modo autonomo le conoscenze acquisite.
Valutazione: Sufficiente
Voto: 18-20
Esito: Sufficiente conoscenza di base degli argomenti principali
dell'insegnamento e del linguaggio tecnico.
Valutazione:Insufficiente
Esito: Non possiede una conoscenza accettabile degli argomenti trattati
nell'insegnamento.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Testi di riferimento/Textbooks:
Data Structures and Algorithms in C++, Michael T. Goodrich, Roberto
Tamassia, David M. Mount, Wiley, 2011. ISBN 978-0470383278 (Linguaggio C+
+, Alberi di ricerca, Ordinamento di stringhe/Language C++, Search Trees,
Sorting strings)
Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching
[3rd ed.], Robert Sedgewick. Addison-Wesley Professional, 1998. ISBN
978-0201510591 (Search Trees)
Algorithms in C++ Part 5: Graph Algorithms, 3rd Edition. Robert Sedgewick.
Addison-Wesley Professional, 2002. ISBN 978-0201361186 (Algoritmi su grafi/
Graph algorithms)
Introduzione agli algoritmi e strutture dati (3 ed). Cormen, Leiserson, Rivest,
Stein. Mc Graw Hill, 2010. ISBN 978-8838665158 (Polinomi e FFT/Polynomias
and the FFT)
Testi di consultazione/Consultation textbooks:
The magic of Algorithms! Lectures on some algorithmic pearls. Paolo Ferragina,
Universita' di Pisa. 2019
C++. Guida essenziale per programmatori di Bjarne Stroustrup, Pearson, 2015.
ISBN 978-8865184493

Codice insegnamento P335474351

METODOLOGIE E TECNICHE DIDATTICHE PER L'INFORMATICA * 3° anno · 6 CFU · INF/01 · 0 file

Il corso intende fornire agli studenti strumenti concreti utili per l'insegnamento dell'informatica come disciplina scientifica. Puo' anche fornire un'occasione per approfondire la conoscenza della disciplina per chi non…

Scheda dell'insegnamento

Obiettivi formativi

Il corso intende fornire agli studenti strumenti concreti utili per l'insegnamento
dell'informatica come disciplina scientifica. Puo' anche fornire un'occasione per
approfondire la conoscenza della disciplina per chi non intende svolgere la
professione di insegnante.
In particolare ci si propone di fornire un'analisi critica delle principali metodologie
per l'insegnamento dell'informatica e di illustrare come costruire attivita'
nell'ambito di un curriculum di informatica coerente con gli obiettivi fissati dalle
indicazioni nazionali per i licei e dalle linee guida per gli istituti tecnici e
professionali. In tale ambito da un lato verranno esposti argomenti specifici
dell'insegnamento, dall'altro lato verranno introdotte tecniche per permettere di
spiegare in maniera efficiente tali argomenti a studenti di scuola.

Programma

2 Standard dei Curricula in Informatica
3 Introduzione: Informatica/Computer Science
2 Rapporti con altre discipline
3 Aspetti di Storia dell’Informatica
2 Informatica e Societa', aspetti etici
4 L'Active Learning e le metodologie di insegnamento basate sull'Active-Learning
4 Strategie di Problem Solving
3 Programmazione Visuale
4 Scratch
4 Imparare a programmare. Misconceptions
2 Mappe concettuali e metafore
4 Giochi educativi per l'Informatica
4 Animazione di algoritmi
4 Progettare una lezione
3 Progettare la valutazione: tipologie di quesiti

Modalità d'esame

L'esame consiste in una prova orale in cui lo studente mostrera' i risultati
ottenuti grazie al corso, in termini di Conoscenza; Capacita' di comprensione;
Capacita' di applicare conoscenza e comprensione; Autonomia di giudizio;
Abilita' comunicative e Capacita' di apprendimento. Cio' avverra' grazie ad un
portfolio sulle attività svolte durante il corso e ad alcune domande sugli
argomenti svolti.
La valutazione viene espressa in trentesimi. In dettaglio, l'esito della valutazione
puo' essere descritto come di seguito.
30 e lode: ottima conoscenza degli argomenti, ottima proprieta' di linguaggio,
ottima capacita' analitica, ottima capacita' di applicare autonomamente le
conoscenze acquisite
30: ottima conoscenza degli argomenti, ottima proprieta' di linguaggio, buona
capacita' analitica, buona capacita' di applicare autonomamente le conoscenze
acquisite
26-29: buona padronanza degli argomenti, buona proprieta' di linguaggio,
discreta capacita' di applicare autonomamente le conoscenze acquisite
24-25: buona conoscenza dei principali argomenti, discreta proprieta' di
linguaggio, limitata capacita' di applicare autonomamente le conoscenze
acquisite
21-23: lo studente conosce gli argomenti principali dell'insegnamento ma non ne
ha piena padronanza, ha limitata proprieta' di linguaggio e capacita' di applicare
autonomamente le conoscenze acquisite
18-20: minima conoscenza degli argomenti principali dell'insegnamento e del
linguaggio tecnico, minima capacita' di applicare autonomamente le conoscenze
acquisite
insufficiente: lo studente non possiede una conoscenza accettabile dei contenuti
degli argomenti trattati nell'insegnamento e non ha alcuna capacita' di applicare
autonomamente le conoscenze acquisite.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

Libro di testo/Textbook:
"Guide to Teaching Computer Science. An Activity-Based Approach", Orit
Hazzan, Tami Lapidot, Noa Ragonis. Springer 2014; ISBN 978-1-4471-6904-8.
Libro di consultazione/Reference Book:
"Great Principles of Computing", Peter J. Denning, Craig H: Martell. MIT Press
2015; ISBN 978-0262-52712-5.

Codice insegnamento 19750

OPEN DATA MANAGEMENT * 3° anno · 6 CFU · INF/01 · 0 file

Il corso vuole esplorare il fenomeno emergente degli Open Data e le potenzialità offerte dall'enorme quantità di dati in formato aperto che vengono resi disponibili da un numero sempre crescente di istituzioni che…

Scheda dell'insegnamento

Obiettivi formativi

Il corso vuole esplorare il fenomeno emergente degli Open Data e le potenzialità
offerte dall'enorme quantità di dati in formato aperto che vengono resi disponibili
da un numero sempre crescente di istituzioni che operano in diversi settori quali
sanità, energia, istruzione, e così via.
La disponibilità dei dati in formato aperto, pubblicamente disponibili e rilasciati
con una licenza che ne consente il riuso ha fatto emergere nuovi scenari in
termini di realizzazione di nuovi servizi da parte delle imprese.
Il corso si propone di analizzare le peculiarità dei dati in formato aperto, i modelli
e le tecniche di rappresentazione dei dati e della loro elaborazione, finalizzata
alla trasformazione dei dati grezzi in dati fruibili con il livello massimo di
apertura. A tale scopo il corso presenterà le tecnologie del Web Semantico e del
Linked Data, alla base dello spazio informativo globale, in continua crescita, che
collega non solo i documenti ma anche dati e i concetti che essi esprimono.
Il corso intende analizzare anche le ricadute in termini economici degli Open
Data, e come i dati aperti stanno aprendo nuove opportunità per la creazione di
start-up basate sul loro impiego.

Programma

2 Introduzione agli Open Data:
Cosa sono gli Open Data, motivazioni alla base dell’apertura dei dati
6 Modelli di produzione e gestione degli Open Data:
Dati e metadati, livelli di classificazione dei dati, principali schemi di metadati e direttive di riferimento.
6 Gli Open Data nel mondo reale.
Esempi di dati aperti a livello locale, nazionale, europeo. Analisi delle banche dati attualmente esistenti e delle
principali fonti di Open Data
6 Tecniche per la rappresentazione dei dati.
Principali tecniche utilizzate nella rappresentazione delle informazioni strutturate; processi di trasformazione
delle informazioni da dati grezzi a dati strutturati; Strumenti utilizzati nella rappresentazione e nella gestione dei
dati aperti.
6 Web Semantico e semantica del Web - Parte I.
Principali linguaggi per la rappresentazione della semantica nel Web (RDF, OWL); le ontologie più diffuse nella
modellazione dei dati.
6 Web Semantico e semantica del Web - Parte II
Il vocabolario Schema.org e le sue applicazioni; triplestore per la creazione di basi di conoscenza semantica;
Linguaggi di interrogazione (SPARQL).
6 Linked Data – una base di conoscenza globale
Evoluzione della Linked Data cloud, i principali settori in cui sono disponibili dati in formato Linked Data,
strumenti di ricerca ed esplorazione delle informazioni nel Linked Data cloud.
6 Tecnologie per il ragionamento automatico
Linguaggi basati su regole, esempi di inferenza sulle classi e sulle istanze, interconnessione dei dati,
knowledge graph e ragionamento automatico.
4 Fare impresa con gli Open Data: storie di successo
Analisi delle principali iniziative di impresa basate sull’utilizzo di dati in formato aperto. Il valore economico
degli Open Data.

Modalità d'esame

Elaborazione di una tesina, prova orale.
L'elaborazione di una tesina consistera' nella realizzazione di un elaborato
basato su uno o piu' argomenti del corso.
Prova orale: servira' per verificare le conoscenze acquisite durante il corso,
l'autonomia nell'approfondire contenuti anche complessi e la capacita'
individuale di trovare soluzioni a problemi proposti.
La prova orale avra' inizio con la presentazione della tesina. Quindi, verra'
verificata la capacita' critica e l'autonomia di giudizio dello studente attraverso
un numero adeguato di domande. Il voto finale e' determinato dalla media del
voto della tesina e del voto dell'orale.
La tesina consentirà di valutare le abilità dello studente nell'elaborazione dei dati
aperti in uno specifico dominio, implementando i passaggi che elevano i dati al
livello più alto della classificazione dei dati aperti. La prova orale sarà volta a
valutare la capacità dello studente nel definire cosa sono i dati aperti,
riconoscere il livello di classificazione di un dataset, applicare i principi del
Linked Open Data.
La valutazione finale è espressa in trentesimi e tiene conto della tabella di
valutazione descritta di seguito.
Tabella di valutazione:
Valutazione: Eccellente
Voto: 30 - 30 e lode
Esito: Ottima conoscenza degli argomenti, ottima proprietà di linguaggio, buona
capacità analitica, lo studente è in grado di applicare le conoscenze per
risolvere i problemi proposti.
Valutazione: Molto buono
Voto: 27-29
Esito: Buona padronanza degli argomenti, piena proprietà di linguaggio, buona
capacità di interazione e di lavoro in gruppo, lo studente è in grado di applicare
le conoscenze per risolvere i problemi proposti.
Valutazione: Buono
Voto: 24-26
Esito: Conoscenza di base dei principali argomenti, discreta proprietà di
linguaggio, discreta capacità di applicare in modo autonomo le conoscenze alla
soluzione dei problemi proposti.
Valutazione: Soddisfacente
Voto: 21-23
Esito: Non ha piena padronanza degli argomenti principali dell'insegnamento ma
ne possiede le conoscenze, soddisfacente proprietà di linguaggio, scarsa
capacità di saper applicare in modo autonomo le conoscenze acquisite.
Valutazione: Sufficiente
Voto: 18-20
Esito: Minima conoscenza di base degli argomenti principali dell'insegnamento e
del linguaggio tecnico, scarsissima o nulla capacità di saper applicare in modo
autonomo le conoscenze acquisite.
Valutazione: Insufficiente
Esito: Non possiede una conoscenza accettabile degli argomenti trattati
nell'insegnamento.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente

Testi di riferimento

Libri di riferimento (Reference books)
Tom Heath and Christian Bizer (2011) Linked Data: Evolving the Web into a
Global Data Space (1st edition). Synthesis Lectures on the Semantic Web:
Theory and Technology, 1:1, 1-136. Morgan & Claypool. (available online at:
http://linkeddatabook.com/editions/1.0/). ISBN: 978-1608454303
Tommaso Di Noia, Francesco Donini, Eugenio Di Sciascio, Roberto De Virgilio.
Semantic Web - Tra ontologie e Open Data. Apogeo. (1st. ed.). ISBN
978-8838787027
Leslie F. Sikos. 2015. Mastering Structured Data on the Semantic Web: From
Html5 Microdata to Linked Open Data (1st ed.). Apress, Berkely, CA, USA.
ISBN: 978-1484210505
Libri per consultazione (Further readings)
Rob Kitchin, The Data Revolution: Big Data, Open Data, Data Infrastructures &
Their Consequences, Sage Pub. Ltd, 2014. (1st ed.) ISBN: 978-1446287477
Joel Gurin, Open Data Now, McGraw-Hill Education, 2014, ISBN:
978-0071829779
David Wood, Marsha Zaidman, Luke Ruth, and Michael Hausenblas. Linked
Data Structured data on the Web, Manning Publications, 2013, ISBN:
978161729039

Codice insegnamento 21195

RETI DI CALCOLATORI 3° anno · 9 CFU · INF/01 · 0 file

Fornire le competenze di base, sia metodologiche che tecniche, sulle reti di calcolatori

Scheda dell'insegnamento

Obiettivi formativi

Fornire le competenze di base, sia metodologiche che tecniche, sulle reti di
calcolatori

Programma

2 Introduzione alle Reti di Calcolatori ed Internet, Applicazioni, Tipologie, Tecnologie ed esempi di reti
2 Introduzione alle Reti di Calcolatori ed Internet protocolli ed i modelli di riferimento ISO/OSI e TCP/IP
3 Il livello Fisico, trasmissione fisica dei segnali, mezzi trasmissivi vincolati e wireless, Basi teoriche della
comunicazione , le reti telefoniche, cellulari,via cavo e satellitari e loro confronto
4 Il livello di collegamento, tipi di collegamenti e protocolli relativi. Indirizzamento LAN e ARP
3 Protocolli Reti LAN ALOHA, Slotted ALOHA, Carrier Sense Multiple Access (CSMA)
5 Il livello di Rete, Protocollo IP ,NAT, Protocollo ICMP
3 Livello di Trasporto Ritardi e perdite e Throughput nella commutazione di pacchetto
5 Il Livello di Trasporto UDP, TCP ed SCTP. Gestione della connessione in TCP e SCTP
4 Il Livello di Trasporto TCP, Principi del Trasferimento dati affidabile Controllo della congestione
3 Livello applicazione Word Wide Web e http protocol
4 Livello applicazione FTP, Posta Elettronica, DNS,SSH
2 Traceroute, ping, simulazione di Ftp ed SMTP con telnet
6 Livello Applicazione. Caratteristiche principali e programmazione delle socket, Programmazione Client/server
TCP e UDP e dei protocolli a livello applicazione, HTTP e FTP
2 HTML5, e cenni ai CSS
6 Applicazioni Web dinamiche e interfaccia con MySQL (ad esempio, Python o PHP)
6 Programmazione Web lato client con JQuery, confronto con architettura server
6 Programmazione Web lato client, cambio di prospettiva con NodeJs.
6 Programmazione Web lato client, NodeJs. Esempio di una Chat come applicazione sincrona con NodeJs

Modalità d'esame

La valutazione prevede due prove, una prova progettuale ed una prova che può
essere o scritta o orale.
La prova progettuale consisterà nella realizzazione e implementazione di un
progetto Client/Server basato sui protocolli di rete TCP e UDP e/o di un progetto
di una Web Application utilizzando i linguaggi Python PHP JQuery e/o Nodejs.
Il progetto può essere realizzato sia singolarmente che da un team costituito da
2 o più studenti, questo al fine di favorire lo sviluppo della capacità di lavorare in
team.
La revisione del progetto dovrà avvenire in presenza di tutti gli studenti del
team, durante il quale si verificherà il contributo individuale di ciascun
componente del team e si assegnerà una valutazione individuale per ciascuno
studente in funzione del contributo individuale.
Contribuiranno ad una valutazione positiva l'originalità della soluzione proposta,
il rigore metodologico, la dimostrazione di avere acquisito appieno gli strumenti
tecnici forniti dal corso. Il peso rispetto al totale della prova progettuale va da
0/30 fino a un massimo di 10/30 ,con un punteggio minimo per superare la
prova di 6/30.
I requisiti per conseguire il punteggio minimo per accedere alla seconda parte
dell'esame consistono nella capacità di realizzare un progetto che, seppure in
modo basilare, rispetti le specifiche assegnate e sia corretto.
La prova scritta o orale servirà per verificare le conoscenze acquisite durante il
corso, l'autonomia nell'approfondire contenuti anche complessi e la capacità
individuale di trovare soluzioni a problemi proposti. La prova avrà l'obbiettivo di
verificata la capacità critica e l'autonomia di giudizio dello studente attraverso un
numero adeguato di domande.
La valutazione della prova va da 0/30 a 20/30 ,le modalità con le quali si formula
la valutazione finale per la prova è la seguente:
da 0/30 a 11/30 conoscenze/competenze non sufficienti,
12/30 conoscenze/competenze almeno elementari,
13/30 conoscenze/competenze un poco più che elementari,
14/30 conoscenze/competenze quasi sufficientemente acquisite,
15/30 conoscenze/competenze sufficientemente acquisite,
16/30 conoscenze/competenze discretamente acquisite,
17/30 conoscenze/competenze più che discretamente acquisite,
18/30 conoscenze/competenze quasi ottimamente acquisite,
19/30 conoscenze/competenze ottimamente acquisite,
20/30 conoscenze/competenze eccellentemente acquisite.
Il voto sarà sommato al punteggio conseguito da ciascuno studente a seguito
della valutazione del progetto.
Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.

Testi di riferimento

Testo di riferimento / Main book:
Reti di calcolatori 6/Ed. con MyLab, Andrew S. Tanenbaum - Nickolas
Feamster - David J. Wetherall ,ISBN 9788891915313
Testo di approfondimento / Reference Book [HTML]:
HTML5 & CSS3: guida completa , Luca Morello ISBN-10 1701959909,
ISBN-13:978-1701959903,
Testo di approfondimento / Reference Book [PHP]:
Programmare con PHP 7,S. Prettyman , P. Poli, Editore Apogeo,
ISBN-10:8850333773,ISBN-13:978-8850333776,
Testo di approfondimento / Reference Book [JQuery]:
JQuery ,E. Amedeo, Editore Apogeo ISBN-10 : 8850331444,ISBN-13 :
978-8850331444
Testo di approfondimento / Reference Book [NodeJs]:
Node.js: Guida completa per NODE JS con esempi, C.Alves. ISBN-13 :
979-8735573197
Testo di approfondimento / Reference Book [PYTHON]:
Flask Web Development, 2nd Edition by Miguel Grinberg Released March 2018
Publisher(s): O'Reilly Media, Inc. ISBN: 9781491991732

Codice insegnamento P759696415

VISIONE ARTIFICIALE 3° anno · 6 CFU · ING-INF/05 · 0 file

Obiettivo del corso e' lo studio degli strumenti di base per l’analisi di immagini digitali e per la grafica al calcolatore. In particolare, sono presentati il teorema della convoluzione, esempi di filtri non lineari,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo del corso e' lo studio degli strumenti di base per l’analisi di immagini
digitali e per la grafica al calcolatore. In particolare, sono presentati il teorema
della convoluzione, esempi di filtri non lineari, operatori spaziali, morfologia
matematica a scala di grigio, tecniche di miglioramento della qualita, algoritmi di
segmentazione e compressione. Saranno descritti i principali metodi di
acquisizione delle immagini e i formati grafici piu' diffusi per la loro corretta
memorizzazione. Le attività di laboratorio includeranno esempi di acquisizione,
miglioramento e interpretazione di immagini e fotogrammi digitali.
Determinare le caratteristiche di un determinato problema che un sistema
intelligente deve risolvere e presentare i risultati a un team di progetto.
Implementare un algoritmo di ricerca per un problema industriale,
caratterizzando le complessità di tempo e spazio.
Presentare i costi e i benefici delle implementazioni di strutture dati dinamiche e
statiche, scegliendo la struttura dati appropriata per la modellazione di un
determinato problema ingegneristico.
Dimostrare i comuni errori di codifica, costruendo e debuggando programmi
utilizzando le librerie standard disponibili con un linguaggio di programmazione
scelto.
Progettare un'applicazione interattiva, applicando un ciclo di progettazione
incentrato sull'utente con i relativi strumenti e tecniche (modalità, navigazione,
design visivo), per ottimizzare l'usabilità e l'esperienza dell'utente in un ambiente
aziendale.

Programma

4 Introduzione al sistema visivo, limitatamente agli aspetti utili per giustificare le scelte tecnologiche che saranno
presentate durante il corso (ad esempio, separazione canali luminanza/crominanza, filtro di Bayer,
interlacciamento).
6 Sistemi di acquisizione digitale. Spazi colore. Immagini truecolor e indicizzate; quantizzazione. Istogramma dei
livelli di grigio; stretching; equalizzazione; sogliatura. Trasformazioni geometriche (ad esempio,
ridimensionamento e rotazione). Segmentazione e quadtree.
6 Convoluzione (media, Gauss, Laplace, Sobel, Prewitt).
6 Istogramma dei contorni. Filtro mediano. Algoritmi veloci di convoluzione. Dithering, Deepgrey.
6 Morfologia matematica a scala di grigio (erosione, dilatazione, apertura, chiusura). Applicazioni (ad esempio,
esaltazione dei contorni e del contrasto).
6 Compressione di immagini digitali; misure di errore. Trasformate discreta coseno e wavelet bidimensionali (ad
esempio, Haar filter bank, multirisoluzione, a trous).
6 Formati grafici statici (ad esempio, BMP, GIF, HAM, JPG) e per semplici animazioni (ad esempio, GIF, IFF).

4 Applicazioni reali (ad esempio, riduzione del rumore e aumento del contrasto, inpainting e convoluzione
normalizzata).
4 Applicazioni reali (ad esempio, simmetria radiale, dithering, trasformata di Hough).
4 Applicazioni reali (ad esempio, individuazione automatica di volti, riconoscimento gestuale).
4 Applicazioni reali (ad esempio, segmentazione e analisi automatica di immagini medicali).

Modalità d'esame

Per gli studenti con disabilità e neurodiversità saranno garantiti gli strumenti
compensativi e le misure dispensative individuate, dal CeNDis - Centro di
Ateneo per la disabilità e la neurodiversità, in base alle specifiche esigenze e in
attuazione della normativa vigente.
Prova pratica e orale per accertare il possesso delle competenze e delle
conoscenze disciplinari previste dal corso. Saranno anche valutate la maturita'
del candidato e la sua chiarezza espositiva.
Eccellente (29-30 / 30 e lode) - eccellente conoscenza degli argomenti,
eccellente proprieta' di linguaggio, buona capacita' analitica, lo studente e' in
grado di applicare le conoscenze per risolvere autonomamente i problemi
proposti, fornendo soluzioni originali.
Ottimo (27-28) - ottima padronanza degli argomenti con discreta proprieta' di
linguaggio, lo studente e' in grado di applicare le conoscenze per risolvere
senza difficolta' i problemi proposti.
Buono (24-26) - buona padronanza degli argomenti con discreta proprieta' di
linguaggio, lo studente e' in grado di applicare le conoscenze per risolvere i
problemi proposti.
Sufficiente (18-23) - lo studente non ha piena padronanza degli argomenti
principali ma ne possiede le conoscenze; appena sufficiente la proprieta' di
linguaggio con scarsa capacita' di applicare autonomamente le conoscenze
acquisite.
Insufficiente - lo studente non possiede una conoscenza accettabile dei
contenuti degli argomenti trattati nell'insegnamento.

Testi di riferimento

Qualsiasi testo di livello universitario che descriva gli argomenti trattati durante il
corso (principalmente elaborazione dei segnali digitali e delle immagini in
particolare). Le lezioni saranno supportate da presentazioni che NON
sostituiscono i seguenti testi consigliati. / Any university-level book that
describes the topics discussed during the course (mainly digital signal
processing and digital images in particular). The lessons will be supported by
presentations that do NOT supersede the following recommended texts.

  • Testo principale, carattere generale / Main suggested book, general topic:
    R.C.Gonzales, R.E.Woods. Elaborazione delle Immagini Digitali. Pearson
    Prentice Hall, 2008. ISBN-13:978-8871925066
  • Testo specifico per la morfologia matematica / Book about mathematical
    morphology:
    P.Soille. Morphological Image Analysis. Springer-Verlag, 2010.
    ISBN-13:978-3642076961
    Durante il corso saranno presentati casi reali e proposti articoli presenti nella
    letteratura del settore per evidenziare l’applicazione delle tecniche discusse. Tali
    articoli saranno anch'essi argomento d'esame / Real cases and articles present
    in the literature will be discussed during the course to highlight the application of
    the proposed techniques will be discussed. These articles will integrate the
    topics of examination.

Codice insegnamento P593630223

ALTRE CONOSCENZE UTILI PER L'INSERIMENTO NEL MONDO DEL LAVORO 2° semestre · 3 CFU · 0 file
ANALISI DI IMMAGINI DIGITALI 1° semestre · 6 CFU · ING-INF/05 · 0 file
PROVA FINALE 2° semestre · 6 CFU · 0 file
TIROCINIO 2° semestre · 8 CFU · 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.