Scheda programma d'esame
LANGUAGES, COMPILERS AND INTERPRETERS
ROBERTA GORI
Academic year2022/23
CourseCOMPUTER SCIENCE
Code653AA
Credits9
PeriodSemester 1
LanguageEnglish

ModulesAreaTypeHoursTeacher(s)
LANGUAGES, COMPILERS AND INTERPRETERSINF/01LEZIONI72
LETTERIO GALLETTA unimap
ROBERTA GORI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Comprendere quali sono i problemi legati alla realizzazione di compilatori e interpreti dei moderni linguaggi di programmazione, al cui progetto e realizzazione sarà in grado di contribuire consapevolmente

Knowledge

The student who successfully completes the course will be able to contribute to the design and implementation of a modern programming language

Modalità di verifica delle conoscenze

Progetto + seminario+esame orale

Assessment criteria of knowledge

Project + oral exam

Capacità

 È richiesta la capacità di comprensione, apprendimento e ragionamento logico-deduttivo e di progetto e realizzazione di artefatti sofware

Skills

A capability is required of understanding, learning and formal reasoning, as well as of designing and implementing

Modalità di verifica delle capacità

I soliti

Assessment criteria of skills

The usual ones

Comportamenti

Educati

Behaviors

Good

Modalità di verifica dei comportamenti

I soliti

Assessment criteria of behaviors

The usual ones

Prerequisiti (conoscenze iniziali)

Un po' di programmazione e di algoritmi

Prerequisites

Programming and algorithms

Indicazioni metodologiche

Lezioni e laboratorio

Teaching methods

Lectures and laboratory

Programma (contenuti dell'insegnamento)
  • Linguaggi regolari e liberi
  • Analisi lessicale e sintattica e genrazione di scanner e parser
  • Aspetti contestuali e loro analisi
  • Rappresentazioni intermedie
  • Tabelle dei simboli: rappresentazione e gestione
  • Funzioni e procedure
  • Anali statiche (data flow, control flow, ...)
  • Ottimizzazioni
  • Generazione di codice
  • Implementazione di un semplice compilatore nel linguaggio OCaml
Syllabus
  • Regular and context-free languages
  • Recognizers: scanners and parsers
  • Contextual analysis
  • Intermediate representations
  • Symbol table: representation and handling
  • Functional and procedural abstractions
  • Static analysis (data flow, control flow, ...)
  • Optimizations
  • Code generation
  • Implementation of a simple compiler in OCaml
Bibliografia e materiale didattico

Keith D. Cooper, Linda Torczon: Engineering a Compiler. Morgan Kaufmann, Second Edition 2013

Alfred V. Aho,‎ Monica S. Lam,‎ Ravi Sethi,‎ Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools. Addison-Wesley, Second Edition 2006

Terence Parr: Language Implementation Patterns. The Pragmatic Bookshelf, 2010

Peter Sestoft: Programming Language Concepts. Springer, 2012

Andrew W. Appel, Jens Palsberg: Modern Compiler Implementation in Java. Cambridge University Press, Second Edition 2004

Flemming Nielson, Hanne Riis Nielson, Chris Hankin: Principles of program analysis. Springer 1999

Bibliography

Keith D. Cooper, Linda Torczon: Engineering a Compiler. Morgan Kaufmann, Second Edition 2013

Alfred V. Aho,‎ Monica S. Lam,‎ Ravi Sethi,‎ Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools. Addison-Wesley, Second Edition 2006

Terence Parr: Language Implementation Patterns. The Pragmatic Bookshelf, 2010

Peter Sestoft: Programming Language Concepts. Springer, 2012

Andrew W. Appel, Jens Palsberg: Modern Compiler Implementation in Java. Cambridge University Press, Second Edition 2004

Flemming Nielson, Hanne Riis Nielson, Chris Hankin: Principles of program analysis. Springer 1999

Indicazioni per non frequentanti

nessuna

Non-attending students info

none

Modalità d'esame

Progetto ed esame orale

Assessment methods

Project and oral exam

Updated: 03/08/2022 17:19