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 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 L'insegnamento presenta i concetti fondamentali della programmazione, delle strutture dati e degli algoritmi utilizzando il linguaggio Python e introduce 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 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/ LEZIONI INIZIO LEZIONI In accordo con il calendario approvato dal Consiglio del Corso di Laurea in Informatica. 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. 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. Agenda 2030 Istruzione di qualità