Informazioni in aggiornamento fino al 30/06/2026 CODICE 80299 ANNO ACCADEMICO 2026/2027 CFU 12 cfu anno 1 INFORMATICA 11896 (L-31 R) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INFO-01/A LINGUA Italiano SEDE GENOVA PERIODO 1° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE L'insegnamento di Introduzione alla Programmazione ha l'obiettivo di fornire le prime basi di algoritmi e programmazione, dando una particolare enfasi agli aspetti di ragionamento scientifico e pensiero computazionale. L'insegnamento prevede attività di didattica frontale affiancate a laboratori guidati che servono per approfondire e consolidare gli argomenti visti in classe. L'insegnamento ha un forte connotato applicativo, lo studente è incoraggiato ad affrontare problemi di complessità crescente in autonomia. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Scopo dell’insegnamento è che i partecipanti acquisiscano familiarità con lo sviluppo di algoritmi nonché le modalità di progettazione, realizzazione e validazione di codice di piccole dimensioni e facilmente comprensibile a partire da specifiche informali fornite dall’utente. Si seguirà l'approccio della programmazione imperativa utilizzando il linguaggio C++, limitatamente alla parte non object-oriented. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Al termine del modulo lo studente/la studentessa dovrà: Conoscere i principi del pensiero computazionale Conoscere i concetti fondamentali dello sviluppo di algoritmi di base e della programmazione imperativa Saper utilizzare strumenti di ambiente testuale di sviluppo di programmi (realizzati in linguaggio C++ limitato alla parte non object-oriented), con un editor di testi, compilazione ed esecuzione da linea di comando. Conoscere i principi di progettazione, realizzazione e validazione di un programma sequenziale di piccole dimensioni partendo dalle specifiche informali fornite dall'utente. Saper produrre codice corretto e comprensibile; nonche' di comprendere, utilizzare, modificare codice prodotto da altri PREREQUISITI Non sono previsti prerequisiti specifici 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'insegnamento è 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 e con compiti a casa. La data di inizio del laboratorio verrà comunicata in aula. Argomenti trattati in aula Introduzione al corso, al pensiero computazionale, agli algoritmi e alla programmazione. Ambienti di programmazione e linguaggi formali. Sviluppo di algoritmi in pseudo-codice: semplici strutture dati e algoritmi su sequenze di dati omogenei ed eterogenei Programmazione imperativa: variabili e costanti; assegnazione; input/output; costrutti di selezione; costrutti di iterazione; tipi base; tipi di dato strutturato: sequenze e struct; funzioni e meccanismi di passaggio dei parametri; puntatori; allocazione dinamica sullo heap; vettori dinamici; liste semplici e operazioni su liste semplici; ricorsione semplice. 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 è 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 dall'insegnamento. DOCENTI E COMMISSIONI ENRICO PUPPO Ricevimento: Su appuntamento via email a enrico.puppo@unige.it Durante il periodo di lezione si possono fissare appuntamenti per gruppi di persone postando sul forum AulaWeb NICOLETTA NOCETI Ricevimento: Ricevimento su appuntamento. Contattare il docente via Teams o via email. MAURIZIO LEOTTA Ricevimento: Gli studenti possono contattare il docente via e-mail LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/11896/studenti-orario 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 (con quiz di ammissione online) prova di laboratorio, alla quale si può accedere dopo aver superato lo scritto Dettagli sulle tipologie di prova e sul meccanismo di valutazione verranno forniti sul modulo aulaweb dell'insegnamento. Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/11896/studenti-disabilita-dsa MODALITA' DI ACCERTAMENTO La prova di teoria permette di verificare l'avvenuta acquisizione di: principi del pensiero computazionale e concetti fondamentali degli algoritmi e della programmazione imperativa basi di programmazione imperativa e di utilizzo di ambiente testuale di sviluppo di programmi (realizzati in linguaggio C++ limitato alla parte non object-oriented), con un editor di testi, compilazione ed esecuzione da linea di comando. La prova di laboratorio permetterà di verificare: Acquisizione dei 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 ALTRE INFORMAZIONI Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento o contattare il docente.