CODICE 52473 ANNO ACCADEMICO 2024/2025 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 Programmazione 1 e' fornire gli strumenti per la programmazione imperativa nei linguaggi di alto livello. In particolare sara' presentato un sottoinsieme del linguaggio C++. Si tratta di un insegnamento essenzialmente pratico, dove l'obiettivo e' imparare a fare. La maggior parte delle ore sara' dedicata alla pratica in laboratorio. Anche le lezioni in aula sono finalizzate a fornire le conoscenze di base sul funzionamento del calcolatore, i modelli e gli strumenti necessari per arrivare alla padronanza del paradigma di programmazione imperativo, nella fattispecie del linguaggio C/C++. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Introduzione alla programmazione, in particolare al paradigma di programmazione imperativo, attraverso il linguaggio C++. Dopo avere frequentato l'insegnamento, lo studente sara' in grado di scrivere semplici programmi nel linguaggio C++, e conoscera' modelli e costrutti utili anche per l'apprendimento futuro di altri linguaggi di programmazione di tipo imperativo. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L'insegnamento 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 di alto livello e le modalita' per l'esecuzione del codice (linguaggio compilato o interpretato). Presentera' i concetti e gli elementi di base della programmazione imperativa di alto livello (variabili, istruzioni, costrutti per il controllo del flusso d'esecuzione, funzioni), utilizzando come esempio il linguaggio C/C++. Fornira' linee guida per la progettazione di piccoli programmi che risolvono un semplice problema e per il testing degli stessi. Come esempio di linguaggio di alto livello verra' utilizzato il (sottoinsieme imperativo del) linguaggio di programmazione C++. L'impostazione dell'insegnamento sarà molto pratica, ad ogni lezione seguirà immediatamente un'attività di laboratorio correlata, dove quanto visto in aula troverà la sua applicazione nello sviluppo di programmi in C++. Chi avra' seguito l'insegnamento Programmazione 1: 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. PREREQUISITI Nessuno. MODALITA' DIDATTICHE L'insegnamento, erogato al secondo semestre, prevede 3 ore di lezione in aula e 4 ore di laboratorio alla settimana. Nei laboratori ogni settimana saranno dati da svolgere piccoli esercizi in C++ per mettere in pratica gli argomenti visti a lezione. Vi sara' la possibilita' di consegnare alcuni di tali esercizi (non valutati ai fini dell'esame) ottenendo utile feedback. In alcune settimane in laboratorio si svolgeranno esercizi di riepilogo che, se consegnati e valutati positivamente, potranno valere fino a due punti bonus sul voto dell'esame (ved. sezione su modalita' di accertamento). PROGRAMMA/CONTENUTO Nozioni base sui calcolatori: rappresentazione dei dati e aritmetica degli elaboratori; cenni sull'architettura del calcolatore e sui sistemi operativi, limitatamente alle nozioni di base necessarie per comrendere come avviene l'esecuzione dei programmi. Introduzione alla programmazione: linguaggi di programmazione di alto livello; stato e cambiamento di stato; espressioni, variabili, dichiarazioni; istruzioni base (assegnazioni, condizionali, cicli, input/output); funzioni; tipi base e strutturati (array, struct); alcuni utili tipi di libreria (string, vector); 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 di programmi; esecuzione del codice; idee base di testing. Come esempio di linguaggio di alto livello sara' trattato il sottoinsieme imperativo del linguaggio C++. TESTI/BIBLIOGRAFIA Slide delle lezioni fornite su aulaweb. Risorse online sul linguaggio C++ (link forniti su aulaweb) Altri testi: Programming Principles and Practice using C++. B. Stroustrup. Editore: Addison-Wesley Professional, 2008 o successive. 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: Ricevimento su appuntamento concordabile via email (paola.magillo@unige.it) MATTEO DELL'AMICO Ricevimento: Su appuntamento (in presenza o online) definito per email (matteo.dellamico@unige.it). NICOLETTA NOCETI Ricevimento: Ricevimento su appuntamento. Contattare il docente via Teams o via email. Commissione d'esame PAOLA MAGILLO (Presidente) NICOLETTA NOCETI MATTEO DELL'AMICO (Presidente Supplente) LEZIONI INIZIO LEZIONI Dal 17 febbraio 2025 secondo l'orario riportato qui Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame si compone di: prova a quiz sugli argomenti visti a lezione prova di laboratorio consistente nella stesura di un programma C++ Non è necessario che le due prove vengano superate nello stesso appello. L'esame è superato se si superano quiz (con voto >=18) e laboratorio (con voto >=18). Il voto finale sarà la media dei due voti, a cui si sommeranno gli eventuali punti di bonus guadagnati con gli esercizi di riepilogo consegnati durante il semestre (ved. sezione su modalita' didattiche). Per gli studenti con disabilità o con DSA si rimanda alla sezione Altre Informazioni. MODALITA' DI ACCERTAMENTO La prova a quiz vuole valutare l'acquisizione dei concetti fondamentali presentati nell'insegnamento. Le domande del quiz verteranno sulle proprietà dei costrutti, sulla comprensione del codice C++, e potranno richiedere di scrivere piccoli frammenti di codice C++. La prova in laboratorio vuole valutare la capacità di produrre del codice c++ funzionante per risolvere piccoli problemi, e consiste nel completare un canovaccio di programma C++ che verrà fornito. La valutazione terra' conto dei seguenti aspetti in ordine decrescente di importanza: Codice funzionante con risultati corretti (requisito minimo) Stile e leggibilità del codice Efficienza di calcolo ALTRE INFORMAZIONI L'insegnamento Programmazione 1 non ha prerequisiti. Sono comunque utili le nozioni di base di logica e matematica normalmente fornite dalla scuola media superiore. Si ricorda alle studentesse e agli studenti con disabilità o con disturbi specifici dell'apprendimento (DSA) che per poter richiedere adattamenti in sede d'esame occorre prima inserire la certificazione sul sito web di Ateneo alla pagina servizionline.unige.it nella sezione “Studenti”. La documentazione sarà verificata dal Settore servizi per l’inclusione degli studenti con disabilità e con DSA dell’Ateneo, come indicato sul sito federato al link: STATISTICA MATEMATICA E TRATTAMENTO INFORMATICO DEI DATI 8766 | Studenti con disabilità e/o DSA | UniGe | Università di Genova | Corsi di Studio UniGe Successivamente, con significativo anticipo (almeno 10 giorni) rispetto alla data di esame occorre inviare una e-mail al/alla docente con cui si sosterrà la prova di esame, inserendo in copia conoscenza sia il docente Referente di Scuola per l'inclusione degli studenti con disabilità e con DSA (sergio.didomizio@unige.it) sia il Settore sopra indicato. Nella e-mail occorre specificare: • la denominazione dell’insegnamento • la data dell'appello • il cognome, nome e numero di matricola dello studente • gli strumenti compensativi e le misure dispensative ritenuti funzionali e richiesti. Il/la referente confermerà al/alla docente che il/la richiedente ha diritto a fare richiesta di adattamenti in sede d'esame e che tali adattamenti devono essere concordati con il/la docente. Il/la docente risponderà comunicando se sia possibile utilizzare gli adattamenti richiesti. Le richieste devono essere inviate almeno 10 giorni prima della data dell’appello al fine di consentire al/alla docente di valutarne il contenuto. In particolare, nel caso in cui si intenda usufruire di mappe concettuali per l’esame (che devono essere molto più sintetiche rispetto alle mappe usate per lo studio) se l’invio non rispetta i tempi previsti non vi sarà il tempo tecnico necessario per apportare eventuali modifiche. Per ulteriori informazioni in merito alla richiesta di servizi e adattamenti consultare il documento: Linee guida per la richiesta di servizi, di strumenti compensativi e/o di misure dispensative e di ausili specifici Agenda 2030 Istruzione di qualità Parità di genere