CODICE 52473 ANNO ACCADEMICO 2022/2023 CFU 8 cfu anno 1 MATEMATICA 8760 (L-35) - GENOVA 8 cfu anno 1 STATISTICA MATEM. E TRATTAM. INFORMATICO DEI DATI 8766 (L-35) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Lo scopo dell'insegnamento e' quello di fornire gli strumenti per la programmazione imperativa attraverso l'introduzione di linguaggi ad alto livello. Saranno presentati MatLab ed un sottoinsieme del C++. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Introduzione ai linguaggi di programmazione attraverso la costruzione di semplici algoritmi in C++ (imperativo). OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L'insegmanento fornira' alcune necessarie nozioni di base sull'architettura del calcolatore, la rappresentazione dei dati, il sistema operativo. Introdurra' le nozioni di algoritmo e di programma, i linguaggi di programmazione ad alto livello e le modalita' per l'esecuzione del codice (linguaggio compilato o interpretato). Presentera' i concetti e i costrutti di base della programmazione imperativa di alto livello (variabili, istruzioni, costrutti per il controllo del flusso d'esecuzione). Fornira' linee guida per la progettazione di piccoli programmi che risolvono un semplice problema e per il testing degli stessi. Come esempi di linguaggi ad alto livello verranno trattati: Nella prima parte del corso (due settimane circa) sara' presentato MATLAB, un ambiente per il calcolo numerico e l'analisi statistica, che ha anche funzionalita' di un linguaggio di programmazione. La maggior parte del tempo sara' dedicata al (sottoinsieme imperativo del) linguaggio di programmazione C++. Dopo avere seguito il corso lo studente: conoscera' le caratteristiche di un linguaggio di programmazione imperativo di alto livello. sapra' delineare un algoritmo e sapra' tradurlo in un programma C++ (per semplici algoritmi / piccoli programmi). sara' in grado di riconoscere i concetti e costrutti tipici dei linguaggi imperativi in altri linguaggi simili al C++, e sara' pertanto in grado di imparare nuovi linguaggi della stessa famiglia. sapra' utilizzare l'ambiente MatLab per risolvere problemi matematici, come quelli incontrati in altri insegnamenti del Corso di Laurea. PREREQUISITI Nessuno. MODALITA' DIDATTICHE L'insegnamento, erogato al secondo semestre, prevede 3 ore di lezione in aula e 4 ore di laboratorio alla settimana. PROGRAMMA/CONTENUTO Nozioni base sui calcolatori: rappresentazione dei dati e aritmetica degli elaboratori; cenni sull'architettura del calcolatore di Von Neumann e sui sistemi operativi finalizzati alla comprensione base dell'esecuzione di programmi. Introduzione alla programmazione: i linguaggi di programmazione di alto livello; stato e cambiamento di stato; dichiarazioni e istruzioni base; linguaggi tipati: tipi base e strutturati; algoritmi semplici e loro implementazione; programmazione strutturata e modularità. Programmazione in piccolo: progettazione di programmi sequenziali di dimensione contenuta a partire dalla specifica informale del problema; compilazione/interpretazione di programmi; esecuzione del codice; idee base di testing. Come esempi di linguaggi ad alto livello saranno trattati MATLAB ed il sottoinsieme imperativo del linguaggio C++. TESTI/BIBLIOGRAFIA Appunti del corso Altri testi: Programming Principles and Practice using C++, Addison-Wesley Professional, 2008. C++. Fondamenti di programmazione -- H. M. Deitel, P. J. Deitel; Editore: Apogeo 2009. Che C serve? Per iniziare a programmare -- Burattini, Chianese, Picariello, Moscato, Sansone; Maggioli editore 2016. DOCENTI E COMMISSIONI PAOLA MAGILLO Ricevimento: Su appuntamento. MATTEO DELL'AMICO NICOLETTA NOCETI Ricevimento: Ricevimento su appuntamento da concordare via email (nicoletta.noceti@unige.it) Commissione d'esame PAOLA MAGILLO (Presidente) MATTEO DELL'AMICO NICOLETTA NOCETI (Presidente Supplente) LEZIONI INIZIO LEZIONI In accordo con il calendario accademico approvato dal Consiglio di Corsi di Studi. Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME La prova di esame consiste in: uno scritto consistente in una serie di domande su Aulaweb (voto massimo 31) prova di laboratorio consistente nella stesura di un programma C++ (voto massimo 31). Non è necessario che le due prove vengano superate nello stesso appello. L'esame è superato se si superano scritto (con voto >=18) e laboratorio (con voto >=18). Il voto finale sarà la media dei due voti. Si attribuirà la lode a chi abbia ottenuto un voto finale >=31. E' previsto un bonus di 2 punti per le consegne delle esercitazioni di laboratorio entro i termini indicati. MODALITA' DI ACCERTAMENTO La prova scritta vuole valutare l'acquisizione dei concetti fondamentali presentati durante il corso. La prova in laboratorio vuole valutare la capacità di produrre del codice c++ funzionante per risolvere piccoli problemi, e consiste nel completare un programma schematico che vi verrà fornito come file con estensione .cpp. Nel file saranno incluse indicazioni su cosa occorre inserire e come, e sulla valutazione in punti delle varie parti. Verrà anche fornito un input per testarlo con i risultati attesi per ogni parte. Le consegne verranno valutate tenendo conto dei seguenti aspetti in ordine decrescente di importanza Produrre un codice funzionante con risultati numerici corretti (requisito minimo) Stile e leggibilità del codice Efficienza di calcolo Calendario appelli Data appello Orario Luogo Tipologia Note 18/01/2023 09:00 GENOVA Scritto 19/01/2023 09:00 GENOVA Laboratorio 09/02/2023 09:00 GENOVA Scritto 10/02/2023 09:00 GENOVA Laboratorio 12/06/2023 09:00 GENOVA Scritto 14/06/2023 09:00 GENOVA Laboratorio 07/07/2023 09:00 GENOVA Scritto 10/07/2023 09:00 GENOVA Laboratorio 07/09/2023 09:00 GENOVA Scritto 08/09/2023 09:00 GENOVA Laboratorio ALTRE INFORMAZIONI Prerequisiti: Nessuno. Sono comunque utili le nozioni di base di logica e matematica normalmente fornite dalla scuola media superiore.