CODICE 111042 ANNO ACCADEMICO 2024/2025 CFU 6 cfu anno 1 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE 9273 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/03 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Insegnamento di base sulla programmazione di calcolatori elettronici basata sul linguaggio C con alcuni cenni al paradigma object oriented (C++) OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI L’insegnamento si propone di fornire una introduzione alla progettazione di un sistema software. La trattazione parte dall'architettura di un sistema di elaborazione e copre le regole sintattiche e semantiche dei linguaggi, coprendo sia il paradigma strutturato (linguaggio C) che il paradigma object-oriented (C#). OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Lo studente che abbia seguito con profitto l’insegnamento di "Fondamenti di Programmazione per l'Elaborazione dei Segnali e dei Dati" sarà in grado di capire ed utilizzare i sistemi per il controllo delle versioni con particolare attenzione a Git capire i concetti fondamentali della programmazione imperativa applicare i concetti acquisiti per implementare semplici programmi analizzare e valutare programmi funzionanti per identificarne la struttura base progettare, creare e verificare il funzionamento di un sistema software base partendo da modelli teorici In particolare, durante questo insegnamento lo studente imparerà a: Capire il funzionamento dei sistemi di controllo versione ed utilizzare Git per la condivisione di codice sorgente Capire la differenza tra hardware e software, la struttura base di un calcolatore elettronico e le differenze tra i linguaggi di programmazione Sviluppare semplici programmi utilizzando il linguaggio di programmazione C. In particolare l’allievo sarà in grado di: creare ed utilizzare variabili scrivere e leggere dalla console scrivere ed utilizzare istruzioni condizionali, cicli e vettori scrivere ed utilizzare funzioni creare ed utilizzare array utilizzare puntatori creare nuove strutture dati e semplici classi Scrivere semplici programmi C++ utilizzando un approccio orientato agli oggetti. In particolare l’allievo sarà in grado di: capire la differenza tra classi ed oggetti utilizzare i metodi di un oggetto capire i concetti base di composizione, ereditarietà e polimorfismo PREREQUISITI Nessun prerequisito richiesto. MODALITA' DIDATTICHE L'insegnamento è costituito da una parte di lezione frontale e una parte di esercitazione. Durante la lezione frontale, il docente presenta gli argomenti fornendo sempre esempi di codice che vengono provati su strumenti di compilazione. Gli studenti possono utilizzare i propri calcolatori durante la lezione per mettere in pratica quanto proposto dal docente. Durante le esercitazioni, gli studenti devono affrontare al calcolatore problemi reali che possono essere risolti applicando le tecniche viste durante le lezioni frontali. PROGRAMMA/CONTENUTO Il seguente elenco riporta i contenuti affrontati durante le lezioni: Introduzione Sistemi di controllo versione Hardware e Software Basi del linguaggio C Algoritmi e Strutture di Controllo Controllo del flusso Funzioni Array, Ricerca e Ordinamento Puntatori Simpletron Strutture Dati OOP - Classi, Oggetti, Metodi OOP - Composizione, Ereditarietà e Polimorfismo Questo insegnamento, trattando temi di interesse scientifico-tecnologico quali la programmazione dei calcolatori elettronici, contribuisce al raggiungimento dei seguenti Obiettivi di Sviluppo Sostenibile dell'Agenda ONU 2030: 8.2 (Raggiungere standard più alti di produttività economica attraverso la diversificazione, il progresso tecnologico e l’innovazione, anche con particolare attenzione all’alto valore aggiunto e ai settori ad elevata intensità di lavoro) 9.5 (Aumentare la ricerca scientifica, migliorare le capacità tecnologiche del settore industriale in tutti gli stati – in particolare in quelli in via di sviluppo – nonché incoraggiare le innovazioni e incrementare considerevolmente, entro il 2030, il numero di impiegati per ogni milione di persone, nel settore della ricerca e dello sviluppo e la spesa per la ricerca – sia pubblica che privata – e per lo sviluppo) TESTI/BIBLIOGRAFIA Slide delle lezioni (scaricabili su AulaWeb) Per approfondire (solo per chi è interessato) Paul Deitel, Harvey Deitel. «Il linguaggio C. Fondamenti e tecniche di programmazione» Pearson; 8° edizione Bjarne Stroustrup «C++. Linguaggio, libreria standard, principi di programmazione»Pearson; 4° edizione Gli studenti con disturbi dell'apprendimento ("disturbi specifici di apprendimento", DSA) potranno utilizzare modalità e supporti specifici che verranno di volta in volta stabiliti d'intesa con il delegato dei corsi di Ingegneria nella Commissione per la Inclusione di studenti con disabilità. DOCENTI E COMMISSIONI LUCIO MARCENARO Ricevimento: Su appuntamento PAMELA ZONTONE LEZIONI INIZIO LEZIONI https://corsi.unige.it/corsi/9273/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'esame comprende una parte "scritta" (in laboratorio con calcolatore) per la realizzazione di un programma software e una parte "orale". Gli studenti possono utilizzare per sostenere la prova scritta il proprio portatile, se lo desiderano. E' possibile consultare durante la prova scritta qualsiasi tipo di materiale che sia utile alla realizzazione del progetto software. La prova orale è costituita da domande sugli argomenti teorici trattati a lezione. E' necessario sostenere la prova scritta in una qualunque sessione d'esame che sia precedente alla prova orale. L'orale può essere sostenuto in una qualsiasi sessione successiva allo scritto. MODALITA' DI ACCERTAMENTO Allo studente che sostiene l'esame di "Fondamenti di Programmazione per l'Elaborazione di Segnali e di Dati" viene assegnato un semplice problema da risolvere attraverso l'implementazione di un programma in C, utilizzando un calcolatore elettronico. Attraverso l'analisi della soluzione sviluppata dallo studente in sede di esame, si verifica a che livello siano stati compresi i concetti fondamentali della programmazione imperativa, come tali concetti siano stati applicati per l'implementazione del programma, se lo studente è in grado di analizzare e valutare il funzionamento del programma realizzato e come i modelli teorici studiati a lezione siano applicati per progettare e creare il software richiesto. La valutazione della prova scritta si basa sul codice sorgente consegnato dallo studente al termine della prova, in particolare sulla sua funzionalità, sulla qualità del codice e sulla chiarezza nella stesura. Durante la prova orale, saranno oggetto di valutazione la qualità dell’esposizione, l’utilizzo corretto del lessico specialistico, la capacità di ragionamento critico sullo studio realizzato.