Vai al contenuto principale
Oggetto:
Oggetto:

Istituzioni di Linguaggi Formali

Oggetto:

Additional Formal Languages

Oggetto:

Anno accademico 2023/2024

Codice attività didattica
MFN0985
Docenti
Gian Luca Pozzato (Titolare)
Jeremy James Sproston (Titolare)
Corso di studio
[008515] Laurea magistrale in informatica
Anno
1° anno, 2° anno
Periodo
Primo semestre
Tipologia
A scelta dello studente
Crediti/Valenza
6 CFU - Numero di ore - Number of hours: 48 (in aula)
SSD attività didattica
INF/01 - informatica
Erogazione
Tradizionale
Lingua
Italiano
Frequenza
Facoltativa
Tipologia esame
Scritto
Prerequisiti
Familiarità con i concetti fondamentali della logica, della teoria degli insiemi e della progettazione di algoritmi iterativi e ricorsivi. Capacità di programmare in linguaggi ad alto livello.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Programmazione I; Programmazione II; Architettura degli elaboratori; Matematica Discreta e Logica.
The student must be acquainted with the basic concepts of logic, set theory and with iterative and recursive algorithm design. The student must also be able to program in high-level languages
Preparatory Courses (providing the expected entry skills): Programmazione I; Programmazione II; Architettura degli elaboratori; Matematica Discreta e Logica.
Mutuato da
Oggetto:

Sommario insegnamento

Oggetto:

Avvisi

DSA o Disabilità: Sostegno e Accoglienza in UniTO e supporto in sede di Esame
Oggetto:

Obiettivi formativi

L'insegnamento ha l'obiettivo di fornire le nozioni fondamentali relative alla specifica di linguaggi formali e alla traduzione di programmi. Sebbene il corso presenti queste nozioni nel contesto specifico della progettazione e realizzazione di compilatori, i concetti, i formalismi, le metodologie e le tecniche presentate trovano applicazione in un'ampia gamma di contesti in cui si richiede la specifica, la comprensione e la traduzione di informazioni strutturate. Questo insegnamento concorre agli obiettivi formativi dell'ambito propedeutico del Corso di Laurea Magistrale in Informatica (LM18).
The course aims to provide students with fundamental notions related to the specification of formal languages and to the translation of programs. Although the course presents these notions in the specific context of compiler design and implementation, the presented concepts, formalisms, methodologies and techniques are applicable in a wide variety of contexts in which the specification, understanding and translation of structured data are necessary. This course contributes to the preparational educational objectives of the "Corso di Laurea Magistrale in Informatica (LM18)". 

Oggetto:

Risultati dell'apprendimento attesi

Comprensione e acquisizione della terminologia tecnica del settore. Conoscenza delle metodologie fondamentali per la descrizione della sintassi di linguaggi formali (ad esempio i linguaggi di programmazione) e di alcune tecniche di analisi sintattica e traduzione. Conoscenza e padronanza degli strumenti di base per la progettazione di traduttori.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE. Acquisizione di conoscenze teoriche relative a linguaggi formali e traduttori.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE. Acquisizione dell’abilità di applicare conoscenza teorica di linguaggi formali e traduttori alla soluzione di problemi pratici relativi alla traduzione di programmi.

AUTONOMIA DI GIUDIZIO. Acquisizione delle capacità per la valutazione delle correttezza della progettazione di traduttori per linguaggi di programmazione e per valutare l’efficacia della loro implementazione e funzionamento. 

ABILITÀ COMUNICATIVE. Acquisizione della capacità di utilizzare framework precise per ragionare di linguaggi formali (automi a stati finiti, grammatiche) e traduttori (definizioni dirette dalla sintassi, schemi di traduzione).

CAPACITÀ DI APPRENDIMENTO. Acquisizione di capacità di imparare e autovalutarsi in un modo autonomo.

Understanding and acquisition of the technical terminology of the field. Knowledge of the fundamental methodologies for the description of the syntax of formal languages (for example, programming languages) and of techniques for syntactical analysis and translation. Knowledge and mastery of the basic tools for the development of translators.

KNOWLEDGE AND UNDERSTANDING Acquisition of theoretical skills concerning formal languages and translators.

APPLYING KNOWLEDGE AND UNDERSTANDING Acquisition of the ability to apply theoretical knowledge of formal languages and translators to the solution of practical problems concerning the translation of programs.

MAKING JUDGEMENTS Acquisition of skills for assessing the correctness of designs for translators for simple languages, and for judging the effectiveness of their implementation and operation.

COMMUNICATION SKILLS Acquisition of the ability to use precise, unambiguous frameworks for reasoning about formal languages (finite-state automata, grammars) and translators (syntax-directed definitions, syntax-directed translation schemes).

LEARNING SKILLS Acquisition of the ability to learn and carry out self-assessment in an autonomous manner.

Oggetto:

Programma

  • Nozioni di base di linguaggi formali
  • Automi a stati finiti
  • Espressioni regolari
  • Proprietà dei linguaggi regolari
  • Grammatiche libere
  • Automi a pila
  • Proprietà dei linguaggi liberi
  • Analisi sintattica top-down
  • Traduzione diretta dalla sintassi
  • Generazione di codice intermedio
  • Basic notions of formal languages
  • Finite-state automata
  • Regular expressions
  • Properties of regular languages
  • Context-free grammars
  • Pushdown automata
  • Properties of context-free languages
  • Top-down parsing
  • Syntax-directed translation
  • Intermediate code generation.
  • Oggetto:

    Modalità di insegnamento

    Ciclo di lezioni (48 ore) erogate con l'ausilio di slide, note, lavagne (fisiche o virtuali), editor per lo sviluppo di codice. Le lezioni sono accompagnate da sessioni interattive dedicate a chiarimenti, esempi ed approfondimenti sui contenuti del corso.

    Series of lessons (48 hours) supported by the use of slides, notes, blackboards (physical or virtual), editors for the development of code. The lessons will be accompanied by interactive sessions dedicated to the presentation of examples, and to the clarification and further exploration of the course contents.

    Oggetto:

    Modalità di verifica dell'apprendimento

    Prova scritta composta di domande di natura teorica ed esercizi su tutto il programma del corso. L'esito della prova scritta è espresso in trentesimi. Per superare la prova, è necessario ottenere un voto di almeno 18 su 30. A richiesta dello studente, e comunque per ottenere la lode, è possibile sostenere una prova orale integrativa.

    Written test, composed of questions of a theoretical nature and exercises on the entire programme of the course. The result of the written test is expressed in marks out of 30. To pass the test, it is necessary to obtain a mark of at least 18 out of 30. Students can also ask to take a supplementary oral exam, which must be taken to obtain the maximum grade of 30 cum laude.

    Testi consigliati e bibliografia



    Oggetto:
    Libro
    Titolo:  
    Automi, Linguaggi e Calcolabilità
    Anno pubblicazione:  
    2018
    Editore:  
    Pearson
    Autore:  
    J. E. Hopcroft, R. Motwani, J. D. Ullman
    Note testo:  
    Le due edizioni precedenti sono ugualmente valide.
    Obbligatorio:  
    No


    Oggetto:
    Libro
    Titolo:  
    Compilatori: Principi, tecniche e strumenti
    Anno pubblicazione:  
    2019
    Editore:  
    Pearson
    Autore:  
    A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman
    Note testo:  
    Le edizioni precedenti sono ugualmente valide.
    Obbligatorio:  
    No


    Oggetto:
    Ultimo aggiornamento: 11/09/2023 08:45
    Non cliccare qui!