Modules | Area | Type | Hours | Teacher(s) | |
LINGUAGGI DI PROGRAMMAZIONE CON LABORATORIO | INF/01 | LEZIONI | 81 |
|
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.
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.
Conoscenza dei piu comuni algoritmi e strutture dati e di un linguaggio con cui esprimerli.
Good knowledge of common algorithms and data structures and of a language for their programming.
Frontale: Lezioni, esercitazioni, attività pratica di laboratorio
Face to face delivery: Lectures, applications and exercises, laboratory practical activities.
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.
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.
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.
Attendance is highly advised and is mandatory for the laboratory activities. Contact the teachers in case of inability to attend.