Modules | Area | Type | Hours | Teacher(s) | |
LINGUAGGI DI PROGRAMMAZIONE CON LABORATORIO | INF/01 | LEZIONI | 81 |
|
Lo studente che completa con succeso il corso acquisirà conoscenze per la comprensione dei principi che stanno alla base dei Linguaggi di Programmazione (LP): Dalla necessità del loro uso nella realizzazione di processi automatici, alla loro diversa definizione, struttura ed implementazione dei meccanismi, espressività, metodolgie di programmazione supportate. Sarà inoltre, in grado di valutare le caratteristiche di ogni LP e la complesiva adeguatezza rispetto ad una data area di applicazioni. Apprenderà due importatnti e tra loro diversi LP: Uno della categoria Descrittiva, OCaml, l'altro della Categoria Prescrittiva e ad Oggetti, Java. Infine, attraverso l'attività di laboratorio sperimenterà in modo fattivo l'uso delle tecniche di formalizzazione dei LP, l'uso di un LP Funzionale e della programmazione funzionale e Higher Order, nella realizzazione di un esecutore di un LP Imperativo e dei suoi programmi.
The student who completes the course successfully will be able to understand the main concepts concerning programming languages (PLs) and their implementation. In particular, the student will be able understand the formal definition of any PL, to properly evaluate its characteristics for programming and adequacy with respect to a given application area. Finally, the Laboratory activities will focus on an experience in the formal definition of a new PL and on the construction of an executor of its programs.
L'accertamento delle conoscenze acquisite durante il corso è affidato:
The student will be assessed on his/her demonstrated ability to discuss and elaborate on the course contents using the appropriate terminology. - In the written exam (2 hours, at most 6 questions), the student must demonstrate his/her knowledge of the course material concerning the theory part and his/her ability in problem solving, in order to produce a correct and formally written reply. - During the oral exam the student must be able to demonstrate his/her knowledge of both parts of the course, being able to discuss the content of the written exam, and the solution proposed for the laboratory report.
Methods:
Further information:
The written exam will be the main one, integrated by an oral exam and a discussion of the laboratory report.
L'accertamento delle capacità acquisite è affidata alla valutazione di una prova finale sugli argomenti trattati e sull'impiego di programmazione con riuso e/o estensione di codice dato.
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
La parte teorica del corso inizia coprendo le basi della meccanizzazione dei processi, della calcolabilità e delle funzioni calcolabili. Passa quindi allo studio sistematico dei linguaggi di programmazione come strumenti per definire formalmente qualsiasi funzione calcolabile e rendere eseguibile il processo espresso dalla funzione. In particolare, nel contesto degli LP imperativi, vengono discussi i formalismi per la sintassi e la semantica dei costrutti di base e le macchine astratte per gli esecutori di conseguenza definiti. Questi argomenti sono infine applicati nello studio di Ocaml, preso dalla classe di LP funzionali, e poi, nello studio di Java, preso dalla classe di LP Object Oriented. Infine, i due LP vengono confrontati nel modo diverso in cui forniscono la definizione del codice e il suo riutilizzo o estensione. Il laboratorio offre un'esperienza pratica nella definizione di un LP attraverso:
The theory part of the course starts covering the basics of the process mechanization, computability and computable functions. It then moves to the systematic study of Programming Languages as the tools to formally define any computable function and to make executable the process the function expresses. In particular, in the context of the Imperative LPs, Formalisms for the Syntax and Semantics of the basic constructs, and the Abstract Machines for the executors accordingly defined, are discussed. These topics are applied in the study of Ocaml, from the class of Functional LPs, and its use in programming and then, in the study of Java, from the class of OO LPs, and its use in programming. Finally, the two LPs are compared in the different way they are providing for code definition and its reuse or extention. The laboratory is an experience in the definition of an LP:
Ad integrazione delle note è indicata la lettura del seguente libri:
Come approfondimento è indicata la lettura (di capitoli) dei seguenti libri e articoli, come indicato durante il corso:
to be accompanied by the integrated reading of th book:
Further readings:
Sconsigliata la non frequenza.
Lo studente dovrà mostrare la propria conoscenza degli argomenti affrontati e le competenze acquisite attraverso: