CODICE 86755 ANNO ACCADEMICO 2024/2025 CFU 6 cfu anno 2 INGEGNERIA INFORMATICA 8719 (L-8) - GENOVA 6 cfu anno 1 METODOLOGIE FILOSOFICHE 8465 (LM-78) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05 LINGUA Italiano SEDE GENOVA PERIODO 2° Semestre MATERIALE DIDATTICO AULAWEB PRESENTAZIONE Il corso studia i principali modelli teorici dell'informatica (grammatiche e automi) e fornisce elementi di progettazione e programmazione orientata agli oggetti in linguaggio C++ volti alla realizzazione di un progetto che sfrutta i temi introdotti nella parte teorica. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Il corso introduce, nella prima parte, concetti relativi a logica proposizionale e induzione. Poi, nella seconda parte, vengono presentati i principali modelli di computazione per l'informatica: Automi, grammatiche, macchine di Turing. Parallemente a questi argomenti è svolta una parte pratica nella quale, dopo una introduzione al linguaggio JAVA, i modelli e le metodologie studiate vengono mostrati attraverso applicazioni. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Nello specifico lo studente sarà in grado di: - dato un linguaggio formale, capire da quale tipologia di grammatica può essere generato e quale automa sarà in grado di riconoscere le stringhe del linguaggio - progettare e realizzare applicazioni object oriented in C++ - realizzare un interprete per un semplice linguaggio di programmazione PREREQUISITI Capacità di impostare e risolvere problemi per via algoritmica utilizzando un linguaggio di programmazione. Conoscenze base di algebra e combinatorica. MODALITA' DIDATTICHE L’insegnamento si compone di lezioni di teoria, per un totale di 24 ore circa, e di una parte pratica, di 24 ore circa. Tutte le lezione saranno tenute dai docenti titolari dell’insegnamento. PROGRAMMA/CONTENUTO Il programma del corso prevede la presentazione e discussione dei seguenti argomenti: - Espressioni regolari e automi a stati finiti - Grammatiche libere dal contesto e automi a stack - Progettazione orientata agli oggetti: diagramma a classi UML e Design Pattern - Programmazione in linguaggio C++: utilizzo di stringhe e vettori dinamici, ereditarietà e polimorfismo, programmazione generica, gestione delle eccezioni, utilizzo della Standard Template Library, concetti avanzati del C++ 20 (view, stream, iteratori, funzioni anonime), utilizzo di smart pointer TESTI/BIBLIOGRAFIA Tutte le slides utilizzate durante le lezioni e altro materiale didattico (es. esercizi) saranno disponibili su aulaweb. In generale, gli appunti presi durante le lezioni e il materiale su aul@web sono sufficienti per la preparazione dell'esame. I libri sotto indicati sono suggeriti come testi di appoggio: (Teoria) Hopcroft, Motwani, Ullman - Introduction to Automata Theory, Languages, and Computation (3rd edition) - Pearson (Pratica) Ray Lischner - Exploring C++ 20 (3rd edition) - Apress DOCENTI E COMMISSIONI ARMANDO TACCHELLA Ricevimento: Su appuntamento a richiesta degli studenti tramite una email al docente. ENRICO GHIORZI Commissione d'esame ARMANDO TACCHELLA (Presidente) LUCA ONETO ENRICO GHIORZI (Presidente Supplente) LEZIONI INIZIO LEZIONI Calendario accademico | Corsi di Studio UniGe Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L’esame si compone di una prova scritta ed un progetto entrambi obbligatori. Lo scritto richiede lo svolgimento di due esercizi sugli argomenti di teoria del corso (materiale accessorio NON consultabile) Il progetto richiede la progettazione e lo sviluppo di un interprete in linguaggio C++ Gli studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali devono contattare il docente all’inizio del corso per concordare modalità didattiche e d’esame che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali e forniscano idonei strumenti compensativi. Si ricorda che la richiesta di misure compensative/dispensative per gli esami dovrà essere inviate al docente del corso, al referente della Scuola e al “Settore servizi per l'inclusione degli studenti con disabilità e con DSA” (dsa@unige.it) almeno 10 giorni lavorativi prima della prova, come da linee guida disponibili al link: https://unige.it/disabilita-dsa MODALITA' DI ACCERTAMENTO I dettagli sulle modalità di preparazione per l’esame e sul grado di approfondimento di ogni argomento verranno dati nel corso delle lezioni. L’esame scritto verificherà l’effettiva acquisizione delle conoscenze, competenze ed abilità tramite lo svolgimento di esercizi sugli argomenti teorici del corso. Il progetto verificherà l’effettiva acquisizione delle conoscenze, competenze ed abilità su un più ampio spettro comprendente teoria, programazione e la loro interazione. Calendario appelli Data appello Orario Luogo Tipologia Note 10/01/2025 10:00 GENOVA Scritto 12/02/2025 10:00 GENOVA Scritto 12/06/2025 10:00 GENOVA Scritto 16/07/2025 10:00 GENOVA Scritto 11/09/2025 10:00 GENOVA Scritto Agenda 2030 Istruzione di qualità Parità di genere Lavoro dignitoso e crescita economica Imprese, innovazione e infrastrutture