Vittorio BILO'

Vittorio BILO'

Professore II Fascia (Associato)

Settore Scientifico Disciplinare INF/01: INFORMATICA.

Dipartimento di Matematica e Fisica "Ennio De Giorgi"

Ex Collegio Fiorini - Via per Arnesano - LECCE (LE)

Ufficio, Piano terra

Telefono +39 0832 29 7521

Settore Scientifico Disciplinare: INF/01

Area di competenza:

Interessi di ricerca:

  • Teoria Algoritmica dei Giochi
  • Teoria degli Algoritmi e della Complessità Computazionale
  • Problemi di Ottimizzazione su Reti di Comunicazione
Orario di ricevimento

Per appuntamento

Recapiti aggiuntivi

Numero di stanza ufficio: 436, primo piano

Visualizza QR Code Scarica la Visit Card

Curriculum Vitae

Si veda la mia pagina personale:

https://sites.google.com/site/vittoriobilo/

Scarica curriculum vitae

Didattica

A.A. 2023/2024

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2023/2024

For matriculated on 2022/2023

Course year 2

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter TEORICO-MODELLISTICO

Location Lecce

ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2023/2024

For matriculated on 2022/2023

Course year 2

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter MATEMATICA PER L'INTELLIGENZA ARTIFICIALE

Location Lecce

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2023/2024

Per immatricolati nel 2021/2022

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2023/2024

Per immatricolati nel 2023/2024

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

A.A. 2022/2023

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2022/2023

Per immatricolati nel 2020/2021

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

INFORMATICA

Corso di laurea FISICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 52.0

Anno accademico di erogazione 2022/2023

Per immatricolati nel 2022/2023

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2022/2023

Per immatricolati nel 2022/2023

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

A.A. 2021/2022

ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2021/2022

For matriculated on 2021/2022

Course year 1

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter PERCORSO COMUNE

Location Lecce

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2021/2022

Per immatricolati nel 2019/2020

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2021/2022

Per immatricolati nel 2021/2022

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

A.A. 2020/2021

ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2020/2021

For matriculated on 2020/2021

Course year 1

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter PERCORSO COMUNE

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2020/2021

Per immatricolati nel 2018/2019

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2020/2021

Per immatricolati nel 2020/2021

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

A.A. 2019/2020

ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2019/2020

For matriculated on 2019/2020

Course year 1

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter PERCORSO COMUNE

Location Lecce

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2019/2020

Per immatricolati nel 2017/2018

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2019/2020

Per immatricolati nel 2019/2020

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Sede Lecce

A.A. 2018/2019

ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2018/2019

For matriculated on 2018/2019

Course year 1

Structure DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Subject matter PERCORSO COMUNE

Location Lecce

ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2018/2019

Per immatricolati nel 2016/2017

Anno di corso 3

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

PROGRAMMAZIONE

Corso di laurea MATEMATICA

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Anno accademico di erogazione 2018/2019

Per immatricolati nel 2018/2019

Anno di corso 1

Struttura DIPARTIMENTO DI MATEMATICA E FISICA "ENNIO DE GIORGI"

Percorso PERCORSO COMUNE

Torna all'elenco
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2022/2023

Anno accademico di erogazione 2024/2025

Anno di corso 3

Semestre Primo Semestre (dal 16/09/2024 al 13/12/2024)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

ALGORITMI E STRUTTURE DATI (INF/01)

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2022/2023

Year taught 2023/2024

Course year 2

Semestre Primo Semestre (dal 18/09/2023 al 15/12/2023)

Language INGLESE

Subject matter TEORICO-MODELLISTICO (A217)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Giochi di Schelling: esistenza ed efficienza di equilibri.

Giochi edonici frazionari: esistenza ed efficienza di equilibri.

Dispense fornite dal docente su richiesta.

(INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2022/2023

Year taught 2023/2024

Course year 2

Semestre Primo Semestre (dal 18/09/2023 al 15/12/2023)

Language INGLESE

Subject matter MATEMATICA PER L'INTELLIGENZA ARTIFICIALE (A227)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Giochi di Schelling: esistenza ed efficienza di equilibri.

Giochi edonici frazionari: esistenza ed efficienza di equilibri.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2021/2022

Anno accademico di erogazione 2023/2024

Anno di corso 3

Semestre Primo Semestre (dal 18/09/2023 al 15/12/2023)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2023/2024

Anno accademico di erogazione 2023/2024

Anno di corso 1

Semestre Secondo Semestre (dal 26/02/2024 al 07/06/2024)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2020/2021

Anno accademico di erogazione 2022/2023

Anno di corso 3

Semestre Primo Semestre (dal 19/09/2022 al 16/12/2022)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
INFORMATICA

Corso di laurea FISICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 52.0

Per immatricolati nel 2022/2023

Anno accademico di erogazione 2022/2023

Anno di corso 1

Semestre Secondo Semestre (dal 27/02/2023 al 09/06/2023)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Informatica si prefigge di fornire agli studenti una breve introduzione ai concetti principali dell'informatica per poi dedicarsi prevalentemente sulla capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

INFORMATICA (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2022/2023

Anno accademico di erogazione 2022/2023

Anno di corso 1

Semestre Secondo Semestre (dal 27/02/2023 al 09/06/2023)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2021/2022

Year taught 2021/2022

Course year 1

Semestre Primo Semestre (dal 27/09/2021 al 17/12/2021)

Language INGLESE

Subject matter PERCORSO COMUNE (999)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Giochi di Schelling: esistenza ed efficienza di equilibri.

Giochi edonici frazionari: esistenza ed efficienza di equilibri.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2019/2020

Anno accademico di erogazione 2021/2022

Anno di corso 3

Semestre Primo Semestre (dal 20/09/2021 al 17/12/2021)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2021/2022

Anno accademico di erogazione 2021/2022

Anno di corso 1

Semestre Secondo Semestre (dal 21/02/2022 al 03/06/2022)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2020/2021

Year taught 2020/2021

Course year 1

Semestre Primo Semestre (dal 21/09/2020 al 18/12/2020)

Language INGLESE

Subject matter PERCORSO COMUNE (999)

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Giochi di Schelling: esistenza ed efficienza di equilibri.

Giochi edonici frazionari: esistenza ed efficienza di equilibri.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2018/2019

Anno accademico di erogazione 2020/2021

Anno di corso 3

Semestre Primo Semestre (dal 21/09/2020 al 18/12/2020)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2020/2021

Anno accademico di erogazione 2020/2021

Anno di corso 1

Semestre Secondo Semestre (dal 22/02/2021 al 04/06/2021)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2019/2020

Year taught 2019/2020

Course year 1

Semestre Primo Semestre (dal 30/09/2019 al 20/12/2019)

Language INGLESE

Subject matter PERCORSO COMUNE (999)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Giochi di Schelling: esistenza ed efficienza di equilibri.

Giochi edonici frazionari: esistenza ed efficienza di equilibri.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2017/2018

Anno accademico di erogazione 2019/2020

Anno di corso 3

Semestre Primo Semestre (dal 23/09/2019 al 20/12/2019)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2019/2020

Anno accademico di erogazione 2019/2020

Anno di corso 1

Semestre Secondo Semestre (dal 24/02/2020 al 29/05/2020)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2018/2019

Year taught 2018/2019

Course year 1

Semestre Primo Semestre (dal 02/10/2018 al 21/12/2018)

Language INGLESE

Subject matter PERCORSO COMUNE (999)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2016/2017

Anno accademico di erogazione 2018/2019

Anno di corso 3

Semestre Primo Semestre (dal 24/09/2018 al 21/12/2018)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2018/2019

Anno accademico di erogazione 2018/2019

Anno di corso 1

Semestre Secondo Semestre (dal 25/02/2019 al 31/05/2019)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
Abilità informatiche e telematiche per lo spettacolo

Corso di laurea DISCIPLINE DELLE ARTI, DELLA MUSICA E DELLO SPETTACOLO (DAMS)

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 3.0

Ripartizione oraria Ore totali di attività frontale: 0.0

Per immatricolati nel 2017/2018

Anno accademico di erogazione 2017/2018

Anno di corso 1

Semestre Primo Semestre (dal 25/09/2017 al 19/01/2018)

Lingua ITALIANO

Percorso PERCORSI COMUNE/GENERICO (999)

Nessun prerequisito particolare.

Il corso di Abilità Informatiche e Telematiche per lo Spettacolo si prefigge di fornire agli studenti un'introduzione al funzionamento di Internet e del World Wide Web, con particolare enfasi sullo studio del linguaggio HTML.

Conoscenze e comprensione: sviluppare un'adeguata conoscenza dell'organizzazione fisica e logica del web. Imparare basi di programmazione nel linguaggio HTML.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare e implementare un semplice sito web.

Autonomia di giudizio: essere in grado di sviluppare scelte progettuali diverse, con diverso livello di generalità.

Abilità comunicative: sarà illustrato il linguaggio HTML e concetti e terminologie dell'ambiente di networking.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di applicarle praticamente con efficacia.

Introduzione all'informatica, modelli di calcolo, hardware, software, architettura di von Neumann, reti di calcolatori, architettura Client-Server, internet, servizi offerti da internet, il World Wide Web: pagine web, web browser, URL, motori di ricerca.

Il linguaggio HTML, i tag, struttura basi di una pagina web, tag e attributi per la formattazione del testo. 

Tag e attributi per la generazione di elenchi numerati e puntati, gestione delle immagini, gestione di immagini e testo, gestione dello sfondo.

Tag e attributi per la gestione dei link. Link globali, locali e interni (ancore).

Tag e attributi per la creazione di tabelle. Tabelle avanzate.

I fogli di stile  (CSS): definizione e uso. I fogli di stile e la gestione dei colori, del testo, dei margini, delle immagini, dello sfondo e dei link.

Uso avanzato dei fogli di stile: creazione di una barra di navigazione.

Materiale fornito dal docente e reperibile sulla propria pagina web.

Abilità informatiche e telematiche per lo spettacolo (INF/01)
ALGORITHMIC GAME THEORY

Degree course MATEMATICA

Subject area INF/01

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 0.0

For matriculated on 2017/2018

Year taught 2017/2018

Course year 1

Semestre Primo Semestre (dal 25/09/2017 al 15/12/2017)

Language INGLESE

Subject matter PERCORSO COMUNE (999)

Location Lecce

Per l'accesso ai contenuti del corso si richiede la conoscenza di nozioni di probabilità, teoria dei grafi, programmazione lineare e teoria della dualità.

Il corso vuole fornire un'introduzione alla Teoria Algoritmica dei Giochi: una disciplina d'avanguardia, nata dall'intersezione tra Teoria dei Giochi e Teoria degli Algoritmi e della Complessità Computazionale. Il corso avrà un taglio marcatamente matematico e volto allo studio dell'inefficienza di soluzioni di equilibrio in vari giochi non cooperativi che modellano svariati scenari applicativi di interesse.

Conoscenze e comprensione: sviluppare la conoscenza di modelli di giochi non cooperativi e del grado di (in)efficienza raggiunto da soluzioni all'equilibrio. 

Capacità di applicare conoscenze e comprensione: essere in grado di estendere le tecniche acquisite a nuovi modelli e problemi.

Autonomia di giudizio: essere in grado di sviluppare tecniche di indagine qualitativa e quantitativa sulle proprietà di soluzioni all'equilibrio.

Abilità comunicative: sviluppare la conoscenza del lessico e delle nozioni tipiche della Teoria dei Giochi.

Capacità di apprendimento: gli studenti saranno stimolati a estendere le soluzioni proposte a modelli e problematiche non coperti durante le lezioni.

Lezioni frontali.

Prova orale.

Introduzione alla Teoria dei Giochi.

Giochi con potenziale: giochi di congestione e giochi di bilanciamento del carico.

Strategie miste e Teorema di Nash.

Il prezzo dell'anarchia e il prezzo della stabilità degli equilibri di Nash puri.

Prezzo dell'anarchia e della stabilità dei giochi di condivisione dei costi su reti.

Prezzo dell'anarchia e della stabilità dei giochi di congestione lineari.

Approssimazione dei turni di contromosse migliori nei giochi di congestione lineari.

Giochi di taglio: prezzo dell'anarchia, prezzo della stabilità e approssimazione dei turni di contromosse migliori.

Giocatori moderatamente avidi nei giochi di taglio: prezzo dell'anarchia e approssimazione dei turni di contromosse migliori.

Combattere il comportamento egoista: tasse e strategie di Stackelberg per i giochi di congestione lineari.

Giocatori parzialmente altruisti nei giochi di congestione lineari.

Giochi di impacchettamento: prezzo dell'anarchia e della stabilità.

Giochi di isolamento: prezzo dell'anarchia e della stabilità.

Dispense fornite dal docente su richiesta.

ALGORITHMIC GAME THEORY (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2015/2016

Anno accademico di erogazione 2017/2018

Anno di corso 3

Semestre Primo Semestre (dal 25/09/2017 al 15/12/2017)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 0.0

Per immatricolati nel 2017/2018

Anno accademico di erogazione 2017/2018

Anno di corso 1

Semestre Secondo Semestre (dal 26/02/2018 al 25/05/2018)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 0.0

Per immatricolati nel 2014/2015

Anno accademico di erogazione 2016/2017

Anno di corso 3

Semestre Primo Semestre (dal 26/09/2016 al 16/12/2016)

Lingua

Percorso PERCORSO COMUNE (999)

Sede Lecce - Università degli Studi

Si richiede che lo studente abbia ben metabolizzato un linguaggio di programmazione e i concetti di astrazione funzionale e programmazione ricorsiva; e che sia in grado di dar vita a dei, sia pur semplici, processi di problem solving. E’ inoltre auspicabile una certa familiarità con discipline formali come l'algebra, la geometria, l'analisi matematica e il calcolo delle probabilità e, in particolar modo, con argomenti come la logica proposizionale, le dimostrazioni per induzione e per assurdo, gli insiemi numerabili, le matrici, il valore atteso di una variabile aleatoria.

Il corso di Algoritmi e Strutture Dati è rivolto a quegli studenti che, avendo già acquisito una buona padronanza di un linguaggio di programmazione, vogliano espandere le loro conoscenze sulla progettazione avanzata di soluzioni algoritmiche per problemi computazionali.

Conoscenze e comprensione: conoscere gli strumenti teorici alla base dell’analisi e progettazione di algoritmi.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi efficienti per problemi computazionali avanzati.

Autonomia di giudizio: essere in grado di valutare, tra le molteplici soluzioni possibili di un dato problema, quelle migliori o che meglio soddisfino certi requisiti.

Abilità comunicative: saranno illustrati strumenti teorici atti a comprendere e comunicare problematiche, modelli e soluzioni tipici dell’area della Teoria degli Algoritmi e della Complessità Computazionale.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere, in maniera efficiente, problemi computazionali.

Problemi Computazionali: problemi decidibili e indecidibili, problemi trattabili e intrattabili.

Complessità di un Algoritmo: il modello RAM a costi uniformi, notazione asintotica, le classi di complessità P, NP, EXP (cenni), problemi NP-completi (cenni).

Esempi di Analisi della Complessità: algoritmi Selection Sort e Insertion Sort.

Limitazioni Superiori e Inferiori alla Complessità di un Problema Computazionale: algoritmi ottimi.

Esempi di Algoritmi Ottimi: calcolo del segmento di somma massima, ricerca sequenziale e binaria di una chiave in un array.

Paradigma Divide et Impera: definizione della tecnica.

Metodi di Soluzione di Relazioni di Ricorrenza: metodo di iterazione, metodo di sostituzione, metodo dell'albero di ricorsione, metodo del cambio di variabile, Teorema Master e sua dimostrazione.

Algoritmi Divide et Impera: moltiplicazione di interi di lunghezza arbitraria, moltiplicazioni di matrici, Merge Sort, Quick Sort.

Paradigma della Programmazione Dinamica: definizione della tecnica.

Algoritmi di Programmazione Dinamica: parentesizzazione ottima del prodotto di n matrici, sottosequenza comune di lunghezza massima, partizionamento, problema dello zaino.

Algoritmi Pseudo-Polinomiali.

Le liste.

Il Problema dei Matrimoni Stabili.

Alberi binari: visite, problemi decomponibili, soluzione efficiente in spazio al problema del minimo antenato comune.

Il Problema del Dizionario: implementazione tramite liste doppie, tabelle hash con liste di trabocco e a indirizzamento aperto, alberi binari di ricerca e alberi AVL (cenni).

Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi, “Strutture di Dati e Algoritmi”, Pearson Editore.

ALGORITMI E STRUTTURE DATI (INF/01)
PROGRAMMAZIONE

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 42.0

Per immatricolati nel 2016/2017

Anno accademico di erogazione 2016/2017

Anno di corso 1

Semestre Primo Semestre (dal 26/09/2016 al 16/12/2016)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Nessun prerequisito particolare.

Il corso di Programmazione si prefigge di fornire agli studenti la capacità di acquisire un rigoroso pensiero computazionale e di sviluppare buone capacità di Problem Solving, anche attraverso l'insegnamento di un linguaggio di programmazione di alto livello.

Conoscenze e comprensione: sviluppare la conoscenza di nozioni computazionali fondamentali come algoritmi, astrazione funzionale, ricorsione, semplici strutture dati. Imparare l'uso del linguaggio C.

Capacità di applicare conoscenze e comprensione: essere in grado di progettare algoritmi per semplici problemi computazionali e svilupparli nel linguaggio C.

Autonomia di giudizio: essere in grado di sviluppare diverse soluzioni algoritmiche per uno stesso problema.

Abilità comunicative: sarà illustrato il linguaggio C.

Capacità di apprendimento: gli studenti saranno stimolati a implementare le soluzioni proposte durante le lezioni.

Lezioni teoriche frontali corredate da vari esercizi.

Prova scritta volta ad accertare non solo la conoscenza degli strumenti teorici illustrati durante il corso, ma anche la capacità del candidato di risolvere semplici problemi computazionali.

Introduzione ai Sistemi di Numerazione: numeri binari, ottali e esadecimali, rappresentazioni e conversioni.

Architettura di un Calcolatore: l'architettura di Von Neumann.

Rappresentazione dell'Informazione: rappresentazione dei numeri, dei caratteri e delle immagini.

Nozione di Algoritmo e Diagrammi di Flusso.

Programmazione nel Linguaggio C: istruzioni di base, tipi di base, espressioni, I/O da tastiera e da file, array, funzioni, puntatori, variabili locali e globali, strutture, liste.

Kim N. King. Programmazione in C, Apogeo, 2013, ISBN 8838785821.

PROGRAMMAZIONE (INF/01)
ALGORITMI E COMPLESSITA'

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea Magistrale

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 0.0

Per immatricolati nel 2014/2015

Anno accademico di erogazione 2015/2016

Anno di corso 2

Semestre Primo Semestre (dal 28/09/2015 al 18/12/2015)

Lingua

Percorso PERCORSO COMUNE (999)

Sede Lecce - Università degli Studi

ALGORITMI E COMPLESSITA' (INF/01)
ALGORITMI E STRUTTURE DATI

Corso di laurea MATEMATICA

Settore Scientifico Disciplinare INF/01

Tipo corso di studio Laurea

Crediti 9.0

Ripartizione oraria Ore totali di attività frontale: 0.0

Per immatricolati nel 2013/2014

Anno accademico di erogazione 2015/2016

Anno di corso 3

Semestre Primo Semestre (dal 21/09/2015 al 18/12/2015)

Lingua

Percorso PERCORSO COMUNE (999)

Sede Lecce - Università degli Studi

ALGORITMI E STRUTTURE DATI (INF/01)

Pubblicazioni

 Si veda la mia pagina personale:

https://sites.google.com/site/vittoriobilo/

Scarica pubblicazioni

Temi di ricerca

Tradizionalmente, i problemi algoritmici che sorgono all’interno dei sistemi informatici multi-utente sono sempre stati formulati sotto l’ipotesi che questi ultimi fossero collaborativi e obbedienti, ossia che seguissero fedelmente i protocolli di comportamento imposti dagli amministratori del sistema in modo tale da ottimizzarne, per quanto possibile, le prestazioni globali. Tuttavia, l’avvento dei sistemi informatici altamente distribuiti ed essenzialmente anarchici (la rete Internet ne è l’esempio più calzante), i cui utenti sono spesso portatori di interessi socio-economici eterogenei e potenzialmente conflittuali, ha radicalmente cambiato il modo di approcciare molti dei problemi algoritmici tipici di questi contesti. L’assunzione che gli utenti del sistema possano comportarsi in maniera indipendente, egoista e non cooperativa, ponendo in essere comportamenti strategici volti a ottimizzare soltanto il proprio tornaconto personale, richiama in maniera del tutto naturale l’utilizzo della Teoria dei Giochi (in particolare la sua sottoarea dedicata allo studio dei giochi non cooperativi), nonché di concetti propri di altre discipline, quali l’economia e la sociologia.

Di conseguenza, nell’ultimo quindicennio, è sorta e si è affermata un’area di ricerca d’avanguardia, che si pone all’intersezione tra la Teoria dei Giochi e l’Informatica Teorica, chiamata, per l’appunto, Teoria dei Giochi Algoritmica. Tra i sui obiettivi principali, vi è quello di applicare i concetti fondamentali della Teoria dei Giochi per modellare, e quindi determinare, il comportamento tenuto da utenti strategici nei sistemi informatici. Seguendo poi un approccio tipicamente algoritmico, le dinamiche che caratterizzano tali comportamenti vengono analizzate in termini di complessità computazionale, mentre le conseguenze che esse possono apportare al grado di efficienza del sistema vengono valutate quantitativamente, al fine di stabilire se il sistema in esame sia effettivamente in grado di “sopravvivere” alla presenza di utenti non cooperativi, oppure se le sue prestazioni siano destinate a degradare in misura tale da renderne la fruizione praticamente impossibile.

I miei principali interessi di ricerca si collocano all'interno della Teoria dei Giochi Algoritmica, con particolare enfasi alla quantificazione del prezzo dell'anarchia e della stabilità degli equilibri di Nash in varie situazioni di interesse sia pratico che teorico.