CODICE 66052 ANNO ACCADEMICO 2024/2025 CFU 9 cfu anno 1 INGEGNERIA BIOMEDICA 8713 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre PROPEDEUTICITA Propedeuticità in uscita Questo insegnamento è propedeutico per gli insegnamenti: INGEGNERIA BIOMEDICA 8713 (coorte 2024/2025) ALGORITMI E PROGRAMMAZIONE ORIENTATA AGLI OGGETTI 84377 MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Lo scopo dell'insegnamento e' quello di fornire gli strumenti per la programmazione imperativa attraverso l'introduzione di linguaggi ad alto livello. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Conoscenze di base della programmazione. Si forniranno gli elementi per analizzare semplici problemi, risolverli mediante algoritmi procedurali, utilizzando un linguaggio di programmazione imperativo. Verranno fornite inoltre le basi per la risoluzione di semplici problemi di analisi dei dati e per l'implementazione di semplici algoritmi. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO L'insegnamento si propone di fornire gli strumenti di base per lo sviluppo delle capacità di problem solving e l'utilizzo di linguaggi di programmazione per la soluzione di problemi e l'elaborazione di dati biomedici. In particolare saranno introdotti: l'architettura dei sistemi informatici, linguaggi di programmazione di alto livello e la progettazione di programmi sequenziali di dimensione contenuta Alla fine del corso gli studenti saranno in grado di risolvere semplici problemi di programmazione anche con l'utilizzo di librerie e soprattutto saranno in grado di sviluppare, comprendere e modificare programmi in linguaggio C++. PREREQUISITI nessuno MODALITA' DIDATTICHE Durante il semestre verranno svolte lezioni teoriche ed esercitazioni pratiche, durante le quali lo studente dovrà affrontare esercizi di problem solving e programmazione. PROGRAMMA/CONTENUTO Verranno affrontati i seguenti argomenti: Nozioni base sui calcolatori: rappresentazione dei dati e aritmetica degli elaboratori; cenni sull'architettura del calcolatore e sui sistemi operativi finalizzati alla comprensione base dell'esecuzione di programmi. Introduzione alla programmazione: i linguaggi di programmazione di alto livello; stato e cambiamento di stato; dichiarazioni e istruzioni base; linguaggi tipati: tipi base e strutturati; 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/interpretazione di programmi; esecuzione del codice; idee base di testing. Le parti di programmazione utilizzeranno un sottoinsieme del linguaggio C++ come esempio di linguaggio ad alto livello in cui realizzare i programmi. TESTI/BIBLIOGRAFIA Testi consigliati: Appunti del corso su Aulaweb Altri testi: Programming Principles and Practice using C++, B. Stroustrup; Addison-Wesley Professional, 2008 C++. Fondamenti di programmazione. H. M. Deitel, P. J. Deitel; Apogeo, 2009 DOCENTI E COMMISSIONI MANUELA CHESSA Ricevimento: Su appuntamento via email: manuela.chessa@unige.it (il docente ha piu' insegnamenti per vari corsi di studi, specificare sempre il cognome e l'insegnamento) FRANCESCA ODONE Ricevimento: Su appuntamento: inviare un'email a francesca.odone@unige.it (specificare COGNOME NOME INSEGNAMENTO e CORSO DI STUDI) Commissione d'esame MANUELA CHESSA (Presidente) FABIO SOLARI ENRICO PUPPO (Presidente Supplente) LEZIONI INIZIO LEZIONI https://corsi.unige.it/8713/p/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame consiste di due prove da svolgersi contestualmente una di seguito all'altra in aule "tradizionali" con calcolatore dello studente: 1) prova a quiz a correzione automatica, consistente in una serie di domande su Aulaweb (voto massimo 6). Chi ottiene votazione >=3.5 potrà sostenere la prova successiva. 2) prova di laboratorio di programmazione al calcolatore (voto massimo 26, sufficienza 12). A discrezione dei docenti, qualora sorgessero dubbi durante la correzione dell'elaborato, può essere chiesto allo studente di sostenere un'ulteriore prova orale, durante la quale saranno verificate esclusivamente le conoscenze necessarie allo svolgimento delle prove 1 e 2 di cui sopra. In caso di fallimento della prova orale, l'esame si intende non superato e sarà richiesto allo studente di sostenere la prova orale in tutti i tentativi successivi fino al superamento dell'esame. L'esame si intende superato se la somma delle due prove risulta >= 18. Il punteggio finale è dato dalla somma delle 2 prove + eventuale bonus derivante dalle esercitazioni svolte durante il corso; se tale punteggio è >30 si registrerà il voto 30 e lode. Lo studente può rinunciare alla registrazione del voto e ripetere la prova. Durante le prove è consentito consultare le dispense, eventuali testi e i propri appunti; non è invece consentito consultare risorse in rete. MODALITA' DI ACCERTAMENTO La prova scritta vuole valutare l'acquisizione dei concetti fondamentali presentati durante il corso. La prova in laboratorio vuole valutare la capacità di produrre del codice c++ funzionante per risolvere piccoli problemi. Le consegne verranno valutate tenendo conto dei seguenti aspetti: Produrre un codice funzionante con risultati numerici corretti (requisito minimo) Stile e leggibilità del codice Efficienza di calcolo