Salta al contenuto principale
CODICE 80269
ANNO ACCADEMICO 2022/2023
CFU
SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 1° Semestre
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

Il corso ha lo scopo di introdurre la teoria dei linguaggi formali e di illustrarne l'applicazione nella progettazione dei compilatori. Particolare enfasi verrà posta verso la progettazione di applicazioni per l’interazione uomo-macchina e nell’ambito della progettazione di sistemi web-based.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

The course objective is to provide the tools, both formal and practical, for the definition of programming languages ​​and their translators and provide application design skills and interoperable web systems in compliance with international standards. The course aims to provide a necessary preparation to the formation of the profiles of the Information Engineers skills that are emerging at national and European level.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Il corso ha lo scopo di introdurre la teoria dei linguaggi formali e di illustrarne l'applicazione nella progettazione dei compilatori. Particolare enfasi verrà posta verso la progettazione di applicazioni per l’interazione uomo-macchina e nell’ambito della progettazione di sistemi web-based.

Il corso è organizzato in tre parti:

  1. La prima parte introduce i “modelli di riferimento” per l’informatica e descrive le proprietà delle più importanti classi di linguaggi formali e delle loro rappresentazioni;
  2. La seconda parte analizza la struttura dei compilatori, esaminando le principali fasi del processo di traduzione, le problematiche associate a ciascuna di esse e le relative tecniche di soluzione;
  3. La terza parte fornisce gli strumenti base per l’elaborazione del linguaggio naturale, al fine di progettare sistemi di interazione uomo-macchina per l’accesso semantico e personalizzato all’informazione. Saranno introdotti inoltre i meccanismi di accesso all’informazione nell’ambito del cosiddetto Web 2.0, e del recente Web of Data.

Sulla base di tale organizzazione, gli obiettivi specifici sono:

  1. Nella prima parte, l'obiettivo è quello di introdurre i “modelli di riferimento” per l’informatica e descrivere le proprietà delle più importanti classi di linguaggi formali e delle loro rappresentazioni;
  2. Nella seconda parte, l'obiettivo è quello di analizzre la struttura dei compilatori, esaminando le principali fasi del processo di traduzione, le problematiche associate a ciascuna di esse e le relative tecniche di soluzione;
  3. Nella terza partel'obiettivo è quello di fornire gli strumenti base per l’elaborazione del linguaggio naturale, al fine di progettare sistemi di interazione uomo-macchina per l’accesso semantico e personalizzato all’informazione.

Tutto questo ai fini di fare acquisire le conoscenze, abilità e competenze necessarie ad un Ingegnere Informatico per:

  • essere in grado di mettere in relazione risultati della teoria dei linguaggi formali con le tecniche di base per la costruzione di analizzatori lessicali e sintattici di linguaggi di programmazione,
  • essere inoltre in grado di utilizzare i risultati della teoria dei linguaggi formali per la progettazione di interfacce uomo-macchina  e per la progettazione di sistemi web interoperabili, facendogli altresì comprendere come gli standard web non costituiscono un limite alla progettazione, ma bensì un modo per creare una nuova generazione di applicazioni web che permettono di abbattere i costi della progettazione, sviluppo e verifica della qualità nel rispetto delle normative vigenti e in termini di accessibilità.

PREREQUISITI

Conoscenze di base sulle architetture dei calcolatori, sulla codifica dell'informazione, sui linguaggi di programmazione procedurale e sulla programmazione lato client e lato server mediante linguaggi di scripting.

MODALITA' DIDATTICHE

Durante lo svolgimento dell'insegnamento verrà chiesto allo studente di partecipare allo sviluppo di:

  • un Progetto individuale o di gruppo (sviluppato durante le esercitazioni) in cui si utilizzeranno strumenti e metodi visti a lezione.

Verrà inoltre attivato sul portale del corso un Forum di discussione sugli argomenti principali introdotti a lezione a cui gli studenti saranno invitati a partecipare.

PROGRAMMA/CONTENUTO

Parte I – Modelli per l’informatica ed elaborazione dei linguaggi

  • Automi a stati finiti, Automi a pila, Macchine di Turing
  • Introduzione alla teoria dei linguaggi
  • Gerarchia di Chomsky
  • Evoluzione dei linguaggi di programmazione
  • Fondamenti dei linguaggi di programmazione

Parte II – Compilatori e Interpreti

  • Struttura di un compilatore
  • Traduzione guidata dalla sintassi
  • Analisi lessicale
  • Analisi sintattica (scrittura di una grammatica, parsing top-down, bottom-up, LR)
  • Generatori di parser
  • Analisi semantica e Generazione codice intermedio

Parte III - Elaborazione del Linguaggio Naturale e Web 2.0

  • Elementi di base di linguistica computazionale e risorse linguistiche
  • Generazione del Linguaggio Naturale
  • Accesso Intelligente all’Informazione
  • Social tagging, folksonomie e Linked Data

Attività di Laboratorio

  • Generatori di analizzatori lessicali
  • Generatori di parser
  • Sviluppo di progetto individuale o di gruppo

TESTI/BIBLIOGRAFIA

  • A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman. Compilatori. Principi, tecniche e strumenti. Ediz. MyLab. Con aggiornamento online, Pearson/Addison-Wesley, 2019.
  • W3C, Web Design and Applications: http://www.w3.org/standards/webdesign/.
  • G. Adorni. Note e appunti messi a disposizione sul portale del corso su AulaWeb.

DOCENTI E COMMISSIONI

Commissione d'esame

GIOVANNI ADORNI (Presidente)

ARMANDO TACCHELLA

MARCO MARATEA (Presidente Supplente)

LEZIONI

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

L'esame finale consisterà in una discussione sul Progetto individuale o di gruppo sviluppato durante il corso e in una valutazione delle discussioni postate nel Forum durante il corso stesso.

MODALITA' DI ACCERTAMENTO

Valutazione del Progetto sviluppato durante il corso e valutazione delle discussioni postate nel Forum.

Calendario appelli

Data appello Orario Luogo Tipologia Note
17/01/2023 10:00 GENOVA Prova pratica
01/02/2023 10:00 GENOVA Prova pratica
05/06/2023 10:00 GENOVA Prova pratica
22/06/2023 10:00 GENOVA Prova pratica
28/08/2023 10:00 GENOVA Prova pratica

ALTRE INFORMAZIONI

"Gli studenti con disabilità o con DSA possono fare richiesta di misure compensative/dispensative per l'esame. Le modalità saranno definite caso per caso insieme al Referente per Ingegneria del Comitato di Ateneo per il supporto agli studenti disabili e con DSA, prof. Francesco Curatelli. Gli studenti che volessero farne richiesta sono invitati a contattare il docente mettendo in copia il Referente  (francesco.curatelli@unige.it).