Scheda programma d'esame
LINGUAGGI DI PROGRAMMAZIONE CON LABORATORIO
MARCO BELLIA
Anno accademico2017/18
CdSMATEMATICA
Codice063AA
CFU9
PeriodoSecondo semestre
LinguaItaliano

ModuliSettore/iTipoOreDocente/i
LINGUAGGI DI PROGRAMMAZIONE CON LABORATORIOINF/01LEZIONI81
MARCO BELLIA unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Il corso fornisce conoscenza sui principali concetti relativi alla struttura, all'uso e all'implementazione dei linguaggi di programmazione. Questa conoscenza può essere utilizzata per comprendere la definizione di un linguaggio, valutarne le caratteristiche e la sua adeguatezza rispetto ad una data area di applicazioni. Infine, il laboratorio offre un'occasione per fare esperienza con la definizione di un semplice linguaggio imperativo, per programmare con linguaggi funzionali e per esplorare il loro impiego nell'implementazione, per prototipazione rapida, dei linguaggi di programmazione.

Knowledge

The student who completes the course successfully will be able to understand the main concepts concerning design, pragmatics and implementation of programming languages. In particular, the student will be able to assess the definition of a language and to properly evaluate the characteristics of each language and to understand its adequacy with respect to a given application area. The laboratory supplies experiences on the definition of a simple imperative language, on programming with functional programming languages and their use in the implementation, via rapid prototyping, of programming languages.

Modalità di verifica delle conoscenze
  • porre domande e discutere le risponde durante le attività frontali 
  • assegnare esercizi and problemi
  • sollecitare discussioni sulla soluzione di esercizi e problemi 
Assessment criteria of knowledge
  • asking questions during lectures
  • assigning exercises and problems
  • active participation in exercise and problem solutions
Comportamenti
  • seguire le lezioni
  • studio individuale
  • risolvere gli esercizi proposti al termine della lezione
  • partecipare in modo attivo alle attività di laboratorio
Behaviors
  • attending lectures
  • individual study
  • solving the problem and exercises that are proposed at the end of each lecture
  • active participation in the laboratory activities
Prerequisiti (conoscenze iniziali)

Conoscenza dei piu comuni algoritmi e strutture dati e di un linguaggio con cui esprimerli.

Prerequisites

Good knowledge of common algorithms and data structures and of a language for their programming.

Indicazioni metodologiche

Frontale: Lezioni, esercitazioni, attività pratica di laboratorio

Teaching methods

Face to face delivery: Lectures, applications and exercises, laboratory practical activities.

Programma (contenuti dell'insegnamento)

Il corso introduce i fondamenti della teoria della calcolabilità e dei modelli di calcolo per ritrovare le ragioni dell'esistenza dei linguaggi di programmazione, della loro molteplicità, e della diversa struttura ed espressività che questi possono avere. Introduce il paradigma dei linguaggi di programmazione per la programmazione sequenziale e discute in modo sistematico semantica, pragmatica e implementazione dei meccanismi fondamentali dei Linguaggi Imperativi, dei Lnguaggi Funzionali, dei Linguaggi Object Oriented. Infine, considera tali linguaggi separatamente nella programmazione in piccolo, nella programmazione in grande, nella programmazione per codice da mantenere e riusare. Il corso è accompagnato da un Laboratorio che coinvolge gli studenti in un'attività pratica volta a sperimentare la definizione di un linguaggio e la sua realizzazione ed uso nella programmazione sequenziale. 

Syllabus

The theory part of the course starts covering the basics of computability, serving as an introduction to the role of programming languages in the formalization of computable functions and of the behaviours of computer processes. It will then move to present the language paradigm for the sequential programming and to introduce the semantics, pragmatics and implementation of the basics of the Imperative languages, of the functional languages and of Object Oriented languages. Finally, such languages are discussed in the programming in the small, in the large and for code reuse. The laboratory involves students in the definition of a programming language for sequential programming and in the puntual definition of it syntacs, semantics, and implementation of an executor for its programs.

Bibliografia e materiale didattico
  • Lucidi di tutte le attività svolte: Lezioni, Esercitazioni, Laboratorio
  • Articoli in estratto o completi e listings di programmi
  • Testo di Riferimento. Gabrielli M., S. Martini, Linguaggi di Programmazione: Principi e Paradigmi (seconda edizione), McGraw-Hill, Milano, 2011 (anche in versione inglese)
  • Altri Testi: Consultare le pagine del corso
Bibliography
  • slides of the daily activities
  • papers in extract or in full version and progam listings
  • Textboock. Gabrielli M., S. Martini, Programming Languages: Principles and Paradigms , Springer-Verlag, London, 2010
  • Additional material: see the Course Homepages
Indicazioni per non frequentanti

Altamente raccomandata la frequenza, in particolare alle attività di laboratorio dove la presenza è indispensabilie. Contattare i docenti in caso di impossibilità a seguire il corso.

Non-attending students info

Attendance is highly advised and is mandatory for the laboratory activities. Contact the teachers in case of inability to attend.

Modalità d'esame
  • Esame Finale in 2 prove scritte successive
  • Valutazione dell'attività svolta in laboratorio
Assessment methods
  • Final Exam in 2 separate written tests
  • Laboratory activity evaluation.
Ultimo aggiornamento 23/02/2018 18:00