Salta al contenuto principale
CODICE 86755
ANNO ACCADEMICO 2024/2025
CFU
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

Commissione d'esame

ARMANDO TACCHELLA (Presidente)

LUCA ONETO

ENRICO GHIORZI (Presidente Supplente)

LEZIONI

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

Agenda 2030
Istruzione di qualità
Istruzione di qualità
Parità di genere
Parità di genere
Lavoro dignitoso e crescita economica
Lavoro dignitoso e crescita economica
Imprese, innovazione e infrastrutture
Imprese, innovazione e infrastrutture