Generali:

  • Dipartimento: Ingegneria
  • Settore Ministeriale: ING-INF/05
  • Codice di verbalizzazione: 8039110
  • Metodi di insegnamento: Frontale
  • Metodi di valutazione: Scritto E Orale
  • Prerequisiti: Conoscenza sufficientemente completa di almeno un linguaggio di programmazione (meglio se più di uno) e delle nozioni di base su algoritmi e programmazione. Conoscenze di architettura dei calcolatori e di sistemi operativi. Familiarità con i concetti di teorema e dimostrazione formale (analisi matematica, geometria, algebra).
  • Obiettivi: OBIETTIVI FORMATIVI L'insegnamento intende fornire una introduzione a concetti fondamentali e problematiche riguardanti due degli elementi ("automi" e "linguaggi") che costituiscono il nucleo fondativo e distintivo dell'informatica all'interno delle discipline di area STEM (scienze, tecnologie, ingegneria, matematica), adottando a questo scopo un approccio che combina aspetti concettuali e pragmatici. Da un punto di vista concettuale il corso presenta elementi della teoria dei linguaggi formali e degli automi, e della teoria della calcolabilita'. Da un punto di vista pragmatico, il corso presenta aspetti fondamentali dei linguaggi di programmazione reali, evidenziandone le caratteristiche comuni, le varianti linguistiche e semantiche e la loro motivazione, e aspetti relativi alla loro implementazione e relativi costi. CONOSCENZA E CAPACITA' DI COMPRENSIONE Al termine del corso lo studente avrà acquisito concetti fondamentali relativi a linguaggi formali e automi (in particolare, a stati finiti) e alle relazioni tra essi. Avrà acquisito inoltre consapevolezza degli elementi fondamentali che caratterizzano un qualsiasi linguaggio di programmazione reale, delle loro diverse declinazioni nei linguaggi esistenti e dei relativi costi di implementazione. CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE Al termine del corso lo studente sarà in grado di risolvere semplici problemi di informatica teorica mediante l'applicazione di algoritmi e la derivazione di dimostrazioni, e di affrontare problematiche relative alle caratteristiche fondamentali dei linguaggi di programmazione reali. In particolare, lo studente sarà in grado di: - dimostrare l'equivalenza o non equivalenza di automi a stati finiti, espressioni regolari, macchine di Turing; costruire automi, espressioni, grammatiche o macchine di Turing che riconoscono un linguaggio formale assegnato, e ragionare in modo formale sulle loro proprietà; - valutate e confrontare l'efficacia e l'efficienza dei diversi costrutti linguistici usati nei linguaggi di programmazione. AUTONOMIA DI GIUDIZIO Al termine del corso lo studente sarà in grado di: - applicare i metodi di base dell'informatica teorica, a partire dagli strumenti formali del ragionamento logico e della dimostrazione matematica, al fine di risolvere in autonomia problemi relativi alla classificazione fondamentale dei linguaggi formali e dei problemi computazionali; - valutare, confrontare e apprezzare criticamente le soluzioni linguistiche e implementative adottate nei linguaggi di programmazione già appresi o da apprendere, anche rispetto alla loro adeguatezza a specifici contesti applicativi. ABILITA' COMUNICATIVE Al termine del corso lo studente avrà acquisito: - padronanza della terminologia di base dell'informatica teorica e capacità di esposizione dei relativi concetti e risultati fondamentali, con particolare riferimento agli ambiti dei linguaggi formali, degli automi a stati finiti, delle espressioni regolari, delle macchine di Turing; - capacità di identificare e definire le soluzioni linguistiche adottate in uno specifico linguaggio di programmazione e i relativi costi di implementazione. CAPACITA' DI APPRENDIMENTO Al termine del corso lo studente avrà acquisito: - la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti attinenti l'informatica teorica, e di utilizzare le conoscenze e metodologie imparate per affrontare problemi nuovi; - la capacità di individuare e valutare criticamente gli aspetti fondamentali a cui prestare attenzione nell'apprendimento di un nuovo linguaggio di programmazione.
  • Ricevimento: martedi' 15:00-16:00, venerdi' 15:00-16:00, Ingegneria dell'Informazione, corpo D, piano 1, stanza D1-13

Didattica:

  • A.A.: 2025/2026
  • Canale: UNICO
  • Crediti: 6

Classe virtuale:

  • Nome classe: GRASSI-8039110-AUTOMI_E_LINGUAGGI
  • Link Microsoft Teams: Link
  • Docente: GRASSI VINCENZO