CODICE 66054 ANNO ACCADEMICO 2019/2020 CFU 9 cfu anno 1 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05 LINGUA Italiano SEDE GENOVA PERIODO Annuale MATERIALE DIDATTICO AULAWEB PRESENTAZIONE La progettazione e lo sviluppo di software rappresenta uno dei cardini dell’odierna ingegneria e dello sviluppo di sistemi complessi. Fondamenti di Informatica è un corso introduttivo che descrive diversi concetti base in modo semplice ed organico. Il corso affronta sia argomenti teorici sia aspetti pratici, questi ultimi legati allo sviluppo di codice C/C++. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Obiettivi: fornire metodologie di progettazione software secondo il paradigma procedurale e il paradigma orientato agli oggetti. Contenuti. Architettura di un calcolatore, strutture dati, analisi di problemi, loro risoluzione algoritmica, prestazioni degli algoritmi, programmazione procedurale strutturata e orientata agli oggetti col C++. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Gli obiettivi formativi specifici sono articolati lungo tre direttrici: 1. Comprensione di aspetti di informatica teorica di base, legati alla matematica discreta. 2. Concettualizzazione di aspetti legati alle fondamenta della programmazione. 3. Estensione di tali concetti al caso della programmazione modulare e a tipi di dati astratti. Alla fine del corso gli studenti saranno in grado di tradurre specifiche in un programma scritto in linguaggio C/C++ strutturandolo seguendo una serie di linee guida definite nel corso. PREREQUISITI Nessuno MODALITA' DIDATTICHE Il corso prevede lezioni frontali e lezioni pratiche. Le lezioni pratiche implicano una serie di esercitazioni che gli studenti devono svolgere in autonomia, e nel caso abbiano dubbi e osservazioni chiedere assistenza agli esercitatori, con ritmo settimanale. PROGRAMMA/CONTENUTO Il programma del corso si articola su tre argomenti: 1. Elementi di matematica discreta: teoria degli insiemi, relazioni e funzioni, strutture algebriche di base, introduzione al calcolo combinatorio. 2. Fondamenti di programmazione: introduzione all’informatica (architettura dei calcolatori, codifica dell’informazione), introduzione alla programmazione (algoritmi, programmi e linguaggi di programmazione), programmazione strutturata in linguaggio C++ (variabili, costanti, tipi, operatori, espressioni, condizioni, cicli, 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 funzioni). 3. 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 overload di operatori, template di classi), 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: - i lucidi presentati a lezione, disponibili in tre diversi formati: 2 lucidi per pagina, 4 lucidi per pagina, 6 lucidi per pagina; - il materiale relativo alle esercitazioni, che sarà reso disponibile contestualmente ad ogni esercitazione. Per chi volesse seguire un libro di testo si consiglia: Per la marte 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). DOCENTI E COMMISSIONI GUALTIERO VOLPE Ricevimento: Il docente è disponibile su appuntamento. Per prendere un appuntamento inviare una e-mail a gualtiero.volpe@unige.it, oppure telefonare allo 0103536542 (ufficio) o allo 0102758252 (laboratorio presso Casa Paganini). FULVIO MASTROGIOVANNI Ricevimento: Il docente è disponibile per appuntamento previa email: nel suo ufficio al secondo piano del Padiglione E, Via Opera 13, 16145, Genova, in EMAROlab, Viale Causa 18, 16145, Genova. Commissione d'esame FULVIO MASTROGIOVANNI (Presidente) GUALTIERO VOLPE (Presidente) PIERPAOLO BAGLIETTO TULLIO VERNAZZA RENATO UGO RAFFAELE ZACCARIA LEZIONI Orari delle lezioni FONDAMENTI DI INFORMATICA ESAMI MODALITA' D'ESAME L’esame di compone di una prova pratica e di una prova orale. La prova pratica si può sostenere, a scelta dello studente, secondo due modalità diverse: un’unica prova pratica alla fine del secondo semestre oppure due prove intermedie, una dopo la fine del primo semestre, e una dopo la fine del secondo semestre. MODALITA' DI ACCERTAMENTO La prova pratica consiste di un esame al calcolatore, e può dare fino a 20 punti. Per chi sceglie le prove parziali, ogni prova può dare fino a 10 punti. Sono ammessi alla prova orale soltanto gli studenti che superano la prova pratica (o le due prove parziali), in particolare secondo una soglia che può essere definita di volta in volta e in base all’esame. L’esame orale fornisce fino a 10 punti. Calendario appelli Data appello Orario Luogo Tipologia Note 15/01/2020 09:00 GENOVA Prova pratica 15/01/2020 09:00 GENOVA Compitino 04/02/2020 09:00 GENOVA Prova pratica 04/02/2020 09:00 GENOVA Compitino 12/06/2020 09:00 GENOVA Prova pratica 03/07/2020 09:00 GENOVA Prova pratica 20/07/2020 09:00 GENOVA Prova pratica 07/09/2020 09:00 GENOVA Prova pratica ALTRE INFORMAZIONI Nessuna