PROGRAMMAZIONE E INTRODUZIONE ALL'INTELLIGENZA ARTIFICIALE MOD1
cod. 1012442

Anno accademico 2024/25
1° anno di corso -
Docente
Francesco ZAMMORI
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
Attività formative affini o integrative
Tipologia attività formativa
Affine/Integrativa
48 ore
di attività frontali
6 crediti
sede:
insegnamento
in

Obiettivi formativi

Alla fine del corso gli studenti saranno padroni dei principali strumenti per
l’analisi dei dati e per il calcolo numerico in Python. In particolare conosceranno la programmazione di tipo procedurale e la programmazione orientata agli oggetti. Verranno anche forniti alcuni elementi di base della programmazione di tipo funzionale.

Prerequisiti

Il corso richiede esclusivamente nozioni d’informatica di base e di statistica.
Ttti gli argomenti verranno
comunque affrontati partendo da zero e, pertanto, saranno fruibili
anche in mancanza delle propedeuticità precedentemente indicate.

Contenuti dell'insegnamento

Il corso introduce i principali strumenti informatici necessari all’analisi dei
dati ed alla risoluzione numerica di problemi tipici dell’ingegneria.
Il focus è sull'uso di Python 3.10 (o superiore) e delle sue principali librerie
per il calcolo scientifico.

Programma esteso

- Introduzione alla programmazione (variabili e tipi di base).
- L’ambiente di sviluppo, Anaconda e Spyder.
- Istruzioni logiche, istruzioni IF...Then...Else, istruzioni Match ... Case
- Iterazione (For Loops, While Loops, Nested Loops, Utilizzo di Else
all’interno di cicli).
- Funzioni (Funzioni di base, Funzioni che ritornano un valore, Visibilità
delle variabili).
- Tipi avanzati (liste, tuple, dizionari ed insiemi).
- Approfondimenti sulle funzioni (Funzione lamba, funzioni con parametri opzionali).
- Funzioni che accettano altre funzioni.
- Closures: funzioni che restituiscono altre funzioni.
- Ricorsione: funzioni che richiamano sé stesse.
- Generatori ed iteratori.
- La gestione degli errori (il blocco try ... except ... finally).
- Il debug, principi ed esempi.
- La programmazione ad oggetti.
- Classi ed Oggetti.
- Costruttori.
- Metodi.
- Metodi magici.
- Ereditarietà e polimorfismo.
- Le proprietà degli oggetti.
- Metodi statici e metodi di classe.
- Creazione di strutture di dati personalizzate (matrice, liste, liste ricorsive, grafi e alberi).

Bibliografia

1) Pensare in Python, by Allen Downey, edited by O’Reilly
2) Learning Python, by Mark Lutz, edited by O’Reilly
3) The Python Workbook, Second Edition, by Ben Stephenson Edited by Springer

Saranno inoltre fornite dispense ed eserciziari (a cura del docente) su
tutti gli argomenti trattati a lezione. Le dispense verranno rilasciate in maniera progressiva
(capitolo per capitolo) con qualche giorno d'anticipo rispetto alle lezioni.

Metodi didattici

Il corso ha contenuti sia teorici, sia pratici.
Gli aspetti teorici verranno esposti in modo tradizionale utilizzando "lavagna e gessetti colorati" ed eventualmente proiettando col video proiettore le linee di codice eseguibile scritte sul momento.
La parte pratica (circa il 50% delle lezioni) verrà invece svolta nei laboratori informatici, dove verranno introdotti casi di studio e/o verranno svolte applicazioni pratiche dei concetti teorici precedentemente introdotti.

Modalità verifica apprendimento

La verifica prevede una prova scritta della durata di circa 2.5 ore, che si
compone di 3-5 esercizi a livello di difficoltà crescente. Si ricorda che l'esame si compone anche di un modulo di Excel, per cui la prova scritta si
svolgerà contestualmente alla prova su Excel 365.
La prova è organizzata in modo che sia possibile svolgerla interamente "su carta", ma è comunque possibile svolgerla utilizzando il proprio
computer portatile (e questa è la modalità consigliata).
La prova orale è prevista solo per gli studenti ammessi con riserva e/o in casi dubbi. Può comunque essere richiesta ad insindacabile giudizio del docente di riferimento.
Per verbalizzare voti superiori a 27 è necessario svolgere un progetto finale. Il progetto può anche essere richiesto, per aumentare il
voto, da chi ha ottenuto almeno 24 punti nella prova scritta.

Altre informazioni

Il 50% del corso si svolgerà in aule didattiche tradizionali, mentre la
restante parte si svolgerà nei laboratori informatici.
E' comunque possibile, e fortemente consigliato, portare il proprio
portatile anche durante le ore di teoria, in modo da poter verificare il codice scritto in tempo reale.
E' anche possibile utilizzare il proprio portatile in sostituzione dei pc presenti nei laboratori. A tal fine è necessario essere dotati di Python 3.10 o superiore. Si consiglia inoltre l'installazione della piattaforma Anaconda e dell'Editor Spyder e Jupiter Notebook in esso contenuto.