PROGRAMMAZIONE, ALGORITMI E STRUTTURE DATI
PROGRAMMING, ALGORITHMS AND DATA STRUCTURES
A.A. | CFU |
---|---|
2025/2026 | 9 |
Docente | Ricevimento studentesse e studenti | |
---|---|---|
Mirko Tagliaferri |
Didattica in lingue straniere |
---|
Insegnamento con materiali opzionali in lingua straniera
Inglese
La didattica è svolta interamente in lingua italiana. I materiali di studio e l'esame possono essere in lingua straniera. |
Assegnato al Corso di Studio
Giorno | Orario | Aula |
---|
Giorno | Orario | Aula |
---|
Obiettivi Formativi
Questo corso ha due scopi principali: (1) Introdurre ai concetti chiave della programmazione informatica e dell'intelligenza artificiale e (2) fornire agli studenti conoscenze tecniche per poter applicare tali concetti in un contesto reale. In tal senso, il corso si focalizzerà sul concetto di algoritmo e come esso possa essere visto sia come concetto teorico generico sia come strumento di risoluzione di problemi in contesti pratici. Inoltre, verranno discusse diverse categorie di problemi per le quali sistemi di intelligenza artificiale possono contribuire a costruire soluzioni. Per raggiungere tali scopi, gli studenti avranno modo di studiare la storia dei concetti di algoritmo e di macchine calcolatrici, per poi entrare nel merito dei dettagli tecnici che caratterizzano l'ideazione e creazione di algoritmi. Una volta acquisite le competenze di base, le diverse caratteristiche dei problemi risolvibili da algoritmi verranno descritte, per comprendere come adottare soluzioni di IA. Dal lato pratico, il corso si focalizzerà sul linguaggio Python, che verrà applicato in diversi contesti, fissando i concetti appresi durante le lezioni teoriche.
Programma
Il programma si compone di 9 parti, con crescenti livelli di complessità.
- 2.1. Introduzione a Python e agli ambienti di programmazione;
- 2.2. Leggibilità di un programma;
- 2.3. Costruire i primi programmi di base.
- 3.1. Strutture di controllo: operatori e condizionali;
- 3.2. Strutture di controllo: i cicli;
- 3.3. Strutture dati;
- 3.4. Eccezioni e programmi complessi.
- 4.1. Cosa sono le librerie di un linguaggio di programmazione;
- 4.2. Application Program Interfaces (APIs);
- 4.3. Creare programmi sofisticati.
- 5.1. Unit test;
- 5.2. Input/Output dei propri file;
- 5.3. Creare programmi che interagiscono con file esterni.
- 6.1. Le espressioni regolari;
- 6.2. La programmazione ad oggetti: teoria;
- 6.3. Ereditarietà;
- 6.4. La programmazione ad oggetti: pratica.
- 7.1. Pandas;
- 7.2. Numpy;
- 7.3. Esempi di utilizzo delle librerie Pandas e NumPy.
- 8.1. Problemi di ricerca;
- 8.2. Soluzioni AI ai problemi di ricerca;
- 8.3. Programmare il gioco del tris;
- 8.4. Problemi di rappresentazione della conoscenza;
- 8.5. Estrazione di informazioni;
- 8.6. Programmare il campo minato;
- 8.7. Probabilità e incertezza;
- 8.8. Come rappresentare l'incertezza;
- 8.9. Programmare PageRank.
- 9.1. Diversi modi di apprendere;
- 9.2. Problemi e soluzioni per l'apprendimento automatico;
- 9.3. Scrivere programmi di apprendimento automatico;
- 9.4. Reti neurali semplici;
- 9.5. Reti neurali complesse;
- 9.6. Programmare delle reti neurali.
Eventuali Propedeuticità
Non sono previste propedeuticità per il corso.
Può risultare utile una predisposizione al pensiero logico e matematico.
Risultati di Apprendimento (Descrittori di Dublino)
Conoscenze e comprensione: lo studente sarà in grado di descrivere e e comprendere i concetti chiave della programmazione informatica. Inoltre, sarà in grado di contestualizzare tale conoscenza e comprensione a diversi campi del sapere scientifico e pratico. Infine, lo studente svilupperà il pieno controllo del pensiero computazionale, imparando ad interpretare le informazioni che lo circondano in maniera chiara e razionale. Infine sarà in grado di determinare l'appropriatezza dell'applicazione di un determinato algoritmo di IA a problemi pratici.
Capacità di applicare conoscenze e comprensione: lo studente sarà in grado di trovare soluzioni a problemi di programmazione, adattando il proprio metodo ai diversi contesti applicativi. In particolare, avrà una buona padronanza di Python e delle sue librerie, con la possibilità di adattare le proprie competenze a diverse applicazioni ed in diversi ambienti lavorativi, siano essi di ricerca o pratici.
Autonomia di giudizio: lo studente sarà in grado di analizzare diverse tipologie di problemi per comprendere quale metodologia di soluzione sia la più adatta a tale contesto. Egli sarà in grado di comprendere quale paradigma di programmazione sia il più adatto per risolvere il problema e avrà la capacità di valutare quali strumenti pratici di Python siano necessari per giungere in maniera adeguata a tale soluzione.
Abilità comunicative: lo studente sarà in grado di esprimere in maniera chiara e coerente i concetti chiave alla base della nozione di algoritmo e di sistema informatico. Sarà inoltre in grado di spiegare in maniera adeguata i propri processi di analisi di un problema per poi delineare una potenziale soluzione algoritmica a tale problema.
Capacità di apprendimento: lo studente svilupperà la capacità di apprendere nuovi linguaggi di programmazione basandosi sui concetti teorici già appresi e sarà in grado di adattare le proprie competenze a diversi contesti applicativi.
Materiale Didattico
Il materiale didattico predisposto dalla/dal docente in aggiunta ai testi consigliati (come ad esempio diapositive, dispense, esercizi, bibliografia) e le comunicazioni della/del docente specifiche per l'insegnamento sono reperibili all'interno della piattaforma Moodle › blended.uniurb.it
Attività di Supporto
All'interno del corso sono previste diverse esercitazioni guidate durante le quali gli studenti saranno in grado di mettere a frutto le conoscenze e le competenze sviluppate fino al momento dell'esercitazione stessa. Esse potranno inoltre essere utilizzate dagli studenti come strumento di autovalutazione per comprendere quale sia il proprio livello di preparazione. Tali esercitazioni saranno valutate solamente collegialmente dalla classe per dare agli studenti un feedback sulla loro preparazione; esse non avranno, tuttavia, alcuna influenza sulla valutazione finale del corso.
Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento
- Modalità didattiche
Lezioni teoriche ed esercitazioni guidate in laboratorio.
- Didattica innovativa
Saranno inclusi dei momenti di Learning by Doing, in particolare durante le esercitazioni in classe. Gli studenti e le studentesse amplieranno la propria conoscenza degli argomenti trattati a lezione risolvendo piccoli problemi predisposti in aula, adattando le loro conoscenze a contesti leggermente diversi rispetto a quelli affrontati in maniera diretta in classe.
- Obblighi
Non sono previsti obblighi.
- Testi di studio
Le dispense fornite dal docente e disponibili sulla piattaforma Moodle sono integrate dal seguente testo:
Per le parti da 1 a 6: Downey, Allen: Pensare in Python, Come Pensare da Informatico; II Ed., Egea, 2018. Il testo dovrà essere studiato integralmente.
Per le parti 7/8: dispense del docente.
- Modalità di
accertamento L'esame è costituito da tre diversi elementi.
Il primo elemento sarà un progetto individuale da concordare con il docente: lo studente dovrà sviluppare il proprio progetto utilizzando gli strumenti appresi durante le lezioni e dovrà essere in grado di discutere tale progetto assieme al docente stesso. Il progetto individuale peserà per un quarto (25%) del voto finale.
Il secondo elemento sarà un'esercitazione pratica da svolgersi assieme al docente il giorno dell'esame: l'esercitazione avrà lo scopo di valutare la capacità dello studente di utilizzare gli strumenti pratici acquisiti a lezione. Tale esercitazione ricalcherà la struttura delle esercitazioni svolte in classe durante il corso e peserà per la metà (50%) del voto finale.
Il terzo elemento sarà un esame orale da svolgersi successivamente all'esercitazione pratica: tale esame orale avrà lo scopo di valutare la capacità dello studente di esprimere i concetti fondamentali della disciplina e la sua padronanza della terminologia tecnica. L'esame orale peserà per un quarto (25%) del voto finale.
- Disabilità e DSA
Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.
A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.
Informazioni aggiuntive per studentesse e studenti non Frequentanti
- Modalità didattiche
Lezioni teoriche ed esercitazioni non sono obbligatorie ma comunque consigliate. Il materiale fornito sulla piattaforma Moodle consente di sopperire alla mancata frequenza.
- Obblighi
Non sono previsti obblighi.
- Testi di studio
Le dispense fornite dal docente e disponibili sulla piattaforma Moodle sono integrate dal seguente testo:
Per le parti da 1 a 6: Downey, Allen: Pensare in Python, Come Pensare da Informatico; II Ed., Egea, 2018. Il testo dovrà essere studiato integralmente.
Per le parti 7/8: dispense del docente.
- Modalità di
accertamento L'esame è costituito da tre diversi elementi.
Il primo elemento sarà un progetto individuale da concordare con il docente: lo studente dovrà sviluppare il proprio progetto utilizzando gli strumenti appresi durante le lezioni e dovrà essere in grado di discutere tale progetto assieme al docente stesso. Il progetto individuale peserà per un quarto (25%) del voto finale.
Il secondo elemento sarà un'esercitazione pratica da svolgersi assieme al docente il giorno dell'esame: l'esercitazione avrà lo scopo di valutare la capacità dello studente di utilizzare gli strumenti pratici acquisiti a lezione. Tale esercitazione ricalcherà la struttura delle esercitazioni svolte in classe durante il corso e peserà per la metà (50%) del voto finale.
Il terzo elemento sarà un esame orale da svolgersi successivamente all'esercitazione pratica: tale esame orale avrà lo scopo di valutare la capacità dello studente di esprimere i concetti fondamentali della disciplina e la sua padronanza della terminologia tecnica. L'esame orale peserà per un quarto (25%) del voto finale.
- Disabilità e DSA
Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.
A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.
« torna indietro | Ultimo aggiornamento: 02/07/2025 |