CODICE 66054 ANNO ACCADEMICO 2024/2025 CFU 9 cfu anno 1 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05 LINGUA Italiano (Inglese a richiesta) SEDE GENOVA PERIODO Annuale MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Fondamenti di Informatica è un insegnamento introduttivo che descrive i concetti base dell’informatica in modo semplice e organico. Le lezioni si concentrano sulle conoscenze fondanti per lo sviluppo del software, affrontando argomenti teorici e aspetti pratici, questi ultimi legati allo sviluppo di programmi in linguaggio C++. Fondamenti di Informatica è il primo passo di un percorso triennale che condurrà lo studente a conoscere ed applicare le metodologie per la progettazione e lo sviluppo del software. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI L'insegnamento introduce i concetti base dell’informatica e le conoscenze fondanti per lo sviluppo del software, affrontando l’analisi di problemi e la loro risoluzione algoritmica, attraverso lo sviluppo di programmi in linguaggio C++, secondo i paradigmi della programmazione strutturata e modulare. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L’insegnamento si propone di guidare gli studenti: Nella comprensione di aspetti di matematica discreta, legati alle basi dell’informatica teorica. Nella concettualizzazione di aspetti legati ai principi fondamentali della programmazione. Nell’estensione di tali concetti al caso della programmazione modulare e a tipi di dato astratti. Al termine dell’insegnamento, lo studente sarà in grado di: Affrontare semplici problemi di matematica discreta, collegandoli agli aspetti dell’informatica nei quali tali concetti matematici trovano applicazione. Descrivere ed applicare i principi fondamentali della programmazione procedurale. Descrivere ed applicare i principi fondamentali della programmazione modulare e dei tipi di dato astratti. Risolvere in modo automatico semplici problemi, attraverso programmi scritti in linguaggio C++. Tradurre una collezione di specifiche in un programma scritto in linguaggio C++. PREREQUISITI Nessuno. Assumendo che i partecipanti non abbiano precedenti esperienze con l’informatica e con la programmazione, l’insegnamento li guida passo dopo passo nella comprensione dei concetti fondamentali di tali discipline. MODALITA' DIDATTICHE L’insegnamento prevede lezioni teoriche e lezioni pratiche. Le lezioni teoriche consistono nella presentazione dei concetti per mezzo di diapositive proiettate in aula e nello svolgimento di esempi e di semplici esercizi, dimostrativi dei concetti introdotti. Le lezioni pratiche implicano lo svolgimento di esercizi da parte dei docenti e una serie di esercitazioni che gli studenti svolgono in parte in aula e in parte in autonomia, con la possibilità di chiedere assistenza agli esercitatori. Si consigliano gli studenti lavoratori e gli studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali di contattare il docente all’inizio del corso per concordare modalità didattiche e d’esame che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali. PROGRAMMA/CONTENUTO Il programma dell’insegnamento si articola in tre parti principali: Elementi di matematica discreta: teoria degli insiemi, relazioni e funzioni, strutture algebriche di base, introduzione al calcolo combinatorio. Fondamenti di programmazione: introduzione all’informatica (architettura dei calcolatori), introduzione alla programmazione (algoritmi, programmi e linguaggi di programmazione), programmazione strutturata in linguaggio C++ (variabili, costanti, tipi, operatori, espressioni, istruzioni condizionali, istruzioni iterative, funzioni, array mono-dimensionali, stringhe di caratteri, array multi-dimensionali, flussi e file, strutture, array di strutture), programmazione avanzata in linguaggio C++ (puntatori e riferimenti, allocazione dinamica della memoria, funzioni ricorsive, template di funzione). Programmazione modulare e tipi di dato astratti: classi e oggetti (metodi e attributi, controllo di accesso ai membri, tipologie di metodi: costruttori, distruttore, selettori, modificatori, operatori, e overloading di operatori, template di classe), astrazione sui dati (information hiding, tipi di dato astratti, principio di indipendenza dalla rappresentazione), applicazione dei tipi di dato astratti per la realizzazione di strutture dati (liste, pile, code). TESTI/BIBLIOGRAFIA Il materiale didattico comprende: Le diapositive presentate a lezione. Il materiale relativo alle esercitazioni, che sarà reso disponibile contestualmente ad ogni esercitazione. Tale materiale sarà disponibile su AulaWeb. In generale, gli appunti presi durante le lezioni e il materiale fornito su AulaWeb sono sufficienti per la preparazione dell’esame. Per chi volesse seguire un libro di testo si consiglia: Per la parte di matematica discreta: C. Delizia, P. Longobardi, M. Maj, C. Nicotera. Matematica Discreta, McGraw-Hill (qualunque edizione). Per la parte di programmazione: L. J. Aguilar. Fondamenti di Programmazione in C++. McGraw-Hill (qualunque edizione). Gli studenti non frequentanti, gli studenti con disabilità o con DSA possono contattare il docente per ricevere indicazioni relative al materiale didattico. DOCENTI E COMMISSIONI RADOSLAW NIEWIADOMSKI Ricevimento: Il docente è disponibile su appuntamento presso il suo ufficio all’ultimo piano di Villa Bonino, Viale Causa 13, 16145, Genova oppure in remoto. Per prendere un appuntamento inviare una e-mail. GUALTIERO VOLPE Ricevimento: Il docente è disponibile su appuntamento presso il suo ufficio all’ultimo piano di Villa Bonino, Viale Causa 13, 16145, Genova, oppure presso Casa Paganini, Piazza S. Maria in Passione 34, 16123, Genova, oppure in remoto sulla piattaforma Microsoft Teams. Per prendere un appuntamento inviare una e-mail a gualtiero.volpe@unige.it Commissione d'esame GUALTIERO VOLPE (Presidente) PIERPAOLO BAGLIETTO RADOSLAW NIEWIADOMSKI (Presidente Supplente) CARMINE TOMMASO RECCHIUTO (Supplente) LUCA VERDERAME (Supplente) LEZIONI INIZIO LEZIONI https://easyacademy.unige.it/portalestudenti/index.php?view=easycourse&_lang=it&include=corso Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L’esame si compone di una prova al calcolatore, formata da due parti. La prima parte prevede un quiz relativo agli argomenti teorici. La seconda parte consiste in una prova pratica di programmazione. La prova si può sostenere, a scelta dello studente, secondo due modalità diverse: un’unica prova alla fine del secondo semestre (prova completa) oppure due prove intermedie, una dopo la fine del primo semestre e una dopo la fine del secondo semestre. Si tengono, di norma, due appelli per la prima prova intermedia (nei mesi di gennaio e febbraio) e due appelli per la seconda prova intermedia (nei mesi di giugno e luglio). Gli studenti che hanno sostenuto la prima prova intermedia devono completare l’esame nei due appelli previsti per la seconda prova intermedia. Successivamente, si potrà sostenere soltanto la prova completa e gli eventuali punteggi ottenuti nella prima prova intermedia andranno perduti. Gli studenti che sostengono nuovamente una prova (intermedia o completa) e consegnano l’elaborato perdono il punteggio conseguito in precedenza. Per sostenere la prova (intermedia o completa) è obbligatorio iscriversi entro i cinque giorni precedenti la data della prova stessa. L’iscrizione avviene attraverso il portale di Ateneo per i servizi agli studenti. La prova completa assegna un punteggio compreso tra 0 e 32 punti. Per chi sceglie le prove intermedie, ogni prova attribuisce un punteggio compreso tra 0 e 16 punti e i punteggi delle prove intermedie si sommano tra di loro per formare il punteggio complessivo dell’esame. Nello specifico: Per ciascuna prova intermedia: la parte di teoria assegna un punteggio compreso tra 0 e 6 punti e si ritiene superata se si ottengono almeno 3 punti. La parte di programmazione assegna un punteggio da 0 a 10 punti e si ritiene superata se si ottengono almeno 6 punti. Nel caso in cui la parte di teoria non venga superata, la parte di programmazione non viene corretta. Per la prova completa: la parte di teoria assegna un punteggio compreso tra 0 e 12 punti e si ritiene superata se si ottengono almeno 6 punti. La parte di programmazione assegna un punteggio da 0 a 20 punti e si ritiene superata se si ottengono almeno 12 punti. Nel caso in cui la parte di teoria non venga superata, la parte di programmazione non viene corretta. I docenti possono assegnare punti aggiuntivi a studenti che si distinguono per essere particolarmente attivi durante le lezioni. La lode viene attribuita nel caso in cui il punteggio finale della prova di esame sia di 31 o 32 punti. Il punteggio finale ottenuto alla prova di esame resta valido fino al termine della sessione invernale successiva. Lo studente può scegliere di accettarlo finché il punteggio resta valido o di sostenere nuovamente l’esame. Gli studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali devono contattare il docente all’inizio del corso per concordare modalità didattiche e d’esame che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali e forniscano idonei strumenti compensativi. Si ricorda che la richiesta di misure compensative/dispensative per gli esami dovrà essere inviate al docente del corso, al referente della Scuola e al “Settore servizi per l'inclusione degli studenti con disabilità e con DSA” (dsa@unige.it) almeno 10 giorni lavorativi prima della prova, come da linee guida disponibili al link: https://unige.it/disabilita-dsa MODALITA' DI ACCERTAMENTO La prova di esame si svolge di norma al calcolatore. La prova contiene quesiti teorici volti ad accertare le conoscenze dello studente relativamente ai concetti di matematica discreta e ai principi della programmazione procedurale e modulare, nonché a valutare la capacità dello studente di affrontare e risolvere semplici problemi legati ai concetti presentati nel corso delle lezioni teoriche. I quesiti potranno essere di diverse tipologie, quali ad esempio domande a risposta aperta, domande a risposta multipla, comprensione e completamento di testi, individuazione e correzione di errori, analisi di semplici porzioni di codice. L’esame contiene inoltre quesiti pratici che richiedono lo sviluppo di codice in linguaggio C++ e sono volti ad accertare la capacità dello studente di risolvere in modo automatico semplici problemi e di tradurre una collezione di specifiche in un programma. Sarà valutata la correttezza dell’implementazione e l’aderenza alle specifiche. Calendario appelli Data appello Orario Luogo Tipologia Note 14/01/2025 09:00 GENOVA Compitino 14/01/2025 09:00 GENOVA Prova pratica 03/02/2025 09:00 GENOVA Compitino 03/02/2025 09:00 GENOVA Prova pratica 09/06/2025 09:00 GENOVA Prova pratica 09/06/2025 09:00 GENOVA Compitino 04/07/2025 09:00 GENOVA Prova pratica 04/07/2025 09:00 GENOVA Compitino 21/07/2025 09:00 GENOVA Prova pratica 01/09/2025 09:00 GENOVA Prova pratica ALTRE INFORMAZIONI Nessuna Agenda 2030 Istruzione di qualità Lavoro dignitoso e crescita economica Imprese, innovazione e infrastrutture