CODICE 80299 ANNO ACCADEMICO 2022/2023 CFU 12 cfu anno 1 INFORMATICA 8759 (L-31) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Il corso di Introduzione alla Programmazione ha l'obiettivo di fornire le prime basi di programmazione, dando una particolare enfasi agli aspetti di ragionamento scientifico e pensiero computazionale. Il corso prevede attività di didattica frontale affiancate a laboratori guidati che servono per approfondire e consolidare gli argomenti visti in classe. Il corso ha un forte connotato applicativo, lo studente è incoraggiato ad affrontare problemi di complessità crescente in autonomia. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI - Fornire la conoscenza di base dei concetti fondamentali della programmazione imperativa con linguaggi di programmazione classici: macchina virtuale; codifica dei dati e delle istruzioni; modello Von Neumann; linguaggio formale, analisi lessicale, sintattica e semantica; algoritmo; tipo di dato; asserzione invariante; complessità di calcolo. - Imparare ad usare un linguaggio di programmazione imperativo e un ambiente testuale di sviluppo di programmi, come per esempio il linguaggio C oppure C++ (limitato alla parte non object-oriented), con un editor di testi, il compilatore GCC e GNU Make. - Imparare a progettare, realizzare e far funzionare un programma sequenziale di piccole dimensioni partendo dalle specifiche informali fornite dall'utente. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Principi del pensiero computazionale La conoscenza di base dei concetti fondamentali della programmazione imperativa con linguaggi di programmazione classici Introduzione ad un linguaggio di programmazione imperativo e un ambiente testuale di sviluppo di programmi, come per esempio il linguaggio C oppure C++ (limitato alla parte non object-oriented), con un editor di testi, compilazione ed esecuzione da linea di comando. Principi di progettazione, realizzazione e validazione di un programma sequenziale di piccole dimensioni partendo dalle specifiche informali fornite dall'utente. Capacità di produrre codice corretto e comprensibile; capacità di comprendere, utilizzare, modificare codice prodotto da altri MODALITA' DIDATTICHE Lezioni frontali "teoriche" (in aula) Laboratori guidati Esercizi erogati tramite aulaweb Vista l'importanza culturale di questo insegnamento (alla base di tutti gli insegnamenti di informatica del corso di laurea) la frequenza assidua è particolarmente consigliata e incoraggiata. PROGRAMMA/CONTENUTO l corso è formato da una parte di lezioni teoriche che si svolgono in aula e da una consistente parte pratica di programmazione che si svolge in laboratorio. La data di inizio del laboratorio verrà comunicata in aula. Argomenti trattati in aula Introduzione al corso, al pensiero computazionale e alla programmazione. Ambienti di programmazione e linguaggi formali. Programmazione imperativa: variabili e istruzioni; assegnazione; input/output; condizionale; cicli; tipi base; tipi di dato strutturato: array/vettori/tabelle, stringhe, struct; funzioni e meccanismi di passaggio dei parametri; puntatori; allocazione dinamica sullo heap; vettori dinamici; liste semplici e operazioni su liste semplici; ricorsione. TESTI/BIBLIOGRAFIA Le lezioni saranno in gran parte svolte con l'ausilio di slide. Le slide possono essere utilizzate come traccia ma *non* sono sufficienti per la preparazione dell'esame. Durante le lezioni si farà in gran parte riferimento al libro: D.S. Malik Programmazione in C++ Apogeo, 2011, ISBN 978-88-503-2967-0 Va benissimo anche (ed e' consigliato come testo di riferimento): B. Stroustrup, Programming: Principles and Practice Using C++, Addison-Westley, 2009, ISBN 978-0321543721. 1272 pagine (disponibile solo in inglese - ce ne sono alcune copie in biblioteca) Quest'ultimo libro tratta però un programma molto più ampio di quello coperto dal corso. DOCENTI E COMMISSIONI FRANCESCA ODONE Ricevimento: Su appuntamento: inviare un'email a francesca.odone@unige.it (specificare Cognome Nome e corso di studi) STEFANO ROVETTA Ricevimento: - A disposizione per 20 minuti dopo ciascuna lezione - Su appuntamento. MAURIZIO LEOTTA 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 FRANCESCA ODONE (Presidente) MAURIZIO LEOTTA STEFANO ROVETTA (Presidente Supplente) EUGENIO MOGGI (Supplente) LEZIONI Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame si compone di due parti prova scritta prova di laboratorio, alla quale si puo` accedere dopo aver superato lo scritto Dettagli sulle tipologie di prova e sul meccanismo di valutazione verranno forniti sul modulo aulaweb del corso Calendario appelli Data appello Orario Luogo Tipologia Note 10/01/2023 09:00 GENOVA Scritto 12/01/2023 15:00 GENOVA Scritto 13/01/2023 09:00 GENOVA Laboratorio 31/01/2023 15:00 GENOVA Scritto 13/02/2023 09:00 GENOVA Scritto 17/02/2023 09:00 GENOVA Laboratorio 12/06/2023 09:00 GENOVA Scritto 12/06/2023 15:00 GENOVA Scritto 16/06/2023 09:00 GENOVA Laboratorio 04/07/2023 09:00 GENOVA Scritto 07/07/2023 15:00 GENOVA Scritto 18/07/2023 14:00 GENOVA Laboratorio 05/09/2023 15:00 GENOVA Scritto 11/09/2023 09:00 GENOVA Scritto 20/09/2023 14:00 GENOVA Laboratorio