CODICE 109203 ANNO ACCADEMICO 2025/2026 CFU 6 cfu anno 1 COMPUTER SCIENCE 11964 (LM-18) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Inglese SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE L'insegnamento presenta i concetti fondamentali in programmazione, strutture dati e algoritmi, fornendo conoscenze di base utili per molti insegnamenti erogati nella Laurea Magistrale in Computer Science. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Apprendere i concetti fondamentali della programmazione, delle strutture dati e degli algoritmi utilizzando il linguaggio Python, con un'introduzione all'uso della libreria numpy. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Lo studente dovrà acquisire le competenze per creare semplici applicazioni utilizzando il linguaggio Python, la capacità di valutarne empiricamente le prestazioni e di scegliere le migliori strutture dati, tra quelle disponibili nel linguaggio, per svolgere determinati compiti. In particolare, al termine del corso gli studenti saranno in grado di: utilizzare la documentazione online su Python e alcune delle sue librerie analizzare parti di programmi (scritti in Python) e comprenderne il funzionamento modificare, eseguire e testare piccoli programmi partendo da una specifica informale di un problema, progettare e scrivere (parti di) programmi che risolvono il problema PREREQUISITI Nessuno. MODALITA' DIDATTICHE Language constructs: expressions, assignments, conditionals, iteration, functions, recursion, exceptions, list comprehension. Data structures: lists/sequences, dictionaries, sets Algorithmic techniques: divide-and-conquer, list processing, memoization, staging Numpy library: arrays,linear algebra operations 486 / 5,000 L'insegnamento prevede lezioni frontali in aula e alcuni compiti a casa relativi agli argomenti trattati. Si presuppone che gli studenti dispongano di un computer portatile con anaconda3 installato. Assistenza per l'installazione di anaconda3 e per l'utilizzo di Jupyter Notebook verrà fornita all'inizio del corso. Le lezioni possono essere registrate su MS Teams (a beneficio degli studenti all'estero). I compiti a casa possono essere svolti in gruppo (al massimo 3 studenti) e devono essere caricati su aulaweb entro le scadenze specificate. PROGRAMMA/CONTENUTO Modelli di calcolo: macchine di Turing, automi cellulari, macchine di Moore Costrutti linguistici di Python: espressioni, assegnazioni, istruzioni condizionali, iterazioni, funzioni, ricorsione, eccezioni, list comprehension Strutture dati: liste/sequenze, dizionari, insiemi Tecniche algoritmiche: divide et impera, elaborazione di liste, memorizzazione, staging Libreria Numpy: array, operazioni di algebra lineare TESTI/BIBLIOGRAFIA https://docs.python.org/3/ documentazione online https://greenteapress.com/wp/think-python-2e/ libro (pdf/html) Ulteriore materiale (comprese registrazioni video) sarà reso disponibile su aulaweb. DOCENTI E COMMISSIONI EUGENIO MOGGI Ricevimento: Vedi il modulo aulaweb dell'insegnamento e in subordine la pagina web https://person.dibris.unige.it/moggi-eugenio/ Commissione d'esame EUGENIO MOGGI (Presidente) ANNALISA BARLA GIORGIO DELZANNO BARBARA CATANIA (Presidente Supplente) LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/11964/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame (della durata massima di 3 ore) consiste in esercizi di programmazione svolti individualmente nei laboratori software DIBRIS e consegnati su aulaweb. Dopo la consegna, verrà resa disponibile una possibile soluzione e gli studenti avranno un tempo limitato (massimo 18 ore) per confermare la consegna. Solo gli elaborati confermati vengono valutati e, se il voto ottenuto è inferiore a 10/30, lo studente accumula una penalità di 1 punto sul voto finale futuro. Il voto finale è dato dalla media ponderata (arrotondata per eccesso) dei punteggi ottenuti nelle due parti 30% dei compiti a casa svolti in itinere 70% dell'esame finale (test di laboratorio) meno le penalità accumulate. L'esame si considera superato se il voto finale è di almeno 18/30. Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/11964/studenti-disabilita-dsa MODALITA' DI ACCERTAMENTO Le due parti valutano le competenze di programmazione acquisite dagli studenti in diversi contesti: nei compiti a casa in itinere, lo studente dovrà utilizzare in modo appropriato i costrutti di programmazione presentati finora e potrà lavorare in team; nei test di laboratorio, lo studente dovrà lavorare individualmente in un tempo limitato e, dopo la consegna, avrà del tempo extra per autovalutare l'elaborato rispetto a una soluzione proposta. Calendario appelli Data appello Orario Luogo Tipologia Note 19/01/2026 09:00 GENOVA Laboratorio DIBRIS, via Dodecaneso 35, SW1 (piano 2) 12/02/2026 09:00 GENOVA Laboratorio DIBRIS, via Dodecaneso 35, SW1 (piano 2) 16/06/2026 09:00 GENOVA Laboratorio 17/07/2026 09:00 GENOVA Laboratorio 01/09/2026 09:00 GENOVA Laboratorio ALTRE INFORMAZIONI Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento (o contattare il docente).