CODICE 66061 ANNO ACCADEMICO 2022/2023 CFU 6 cfu anno 1 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE 9273 (L-8) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/01 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" sarà in grado di 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 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 è costruito 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 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 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 Paul Deitel, Harvey Deitel «Visual C# How to Program» Pearson Education; 1° 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 Commissione d'esame LUCIO MARCENARO (Presidente) PAOLO GASTALDO (Presidente Supplente) CARLO REGAZZONI (Presidente Supplente) LEZIONI INIZIO LEZIONI https://corsi.unige.it/9273/p/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" viene assegnato un semplice problema da risolvere attraverso l'implementazione di un programma in C o 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. Calendario appelli Data appello Orario Luogo Tipologia Note 31/05/2023 09:00 GENOVA Scritto 14/06/2023 15:00 GENOVA Orale 15/06/2023 09:00 GENOVA Scritto 22/06/2023 09:00 GENOVA Orale 11/07/2023 09:00 GENOVA Scritto 28/07/2023 09:00 GENOVA Orale 11/09/2023 09:00 GENOVA Scritto 15/09/2023 09:00 GENOVA Orale