|LINGUAGGI DI PROGRAMMAZIONE CON LABORATORIO||INF/01||LEZIONI||81|
The student who completes the course successfully will be able to understand the main concepts concerning programming languages and their implementation. In particular, the student will be able to assess the semantics of a language. He or she will also be able to properly evaluate the characteristics of each language and to understand ita adequacy with respect to a given application area. Finally, in the laboratory a focus will be offered on functional languages.
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.
- Final oral exam
- Final written exam
- Laboratory report
The written exam will be the main one, integrated by an oral exam and a discussion of the laboratory report.
Delivery: face to face
- attending lectures
- individual study
- Laboratory work
The theory part of the course starts covering the basics of (regular) automata and languages, serving as an introduction to a brief tour on compilers and intepreters. It will then move to present both the denotational and the operational semantics of a simple language, built on stages based on data types (booleans, functions, commands). Finally, the correspondence of the two semantics will be shown. The laboratory part of the course introduces a functional language, showing to the students its use for implementing interpreters and static analyzers.
Recommended reading includes the following works; further bibliography will be indicated during the lectures. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1986. Maurizio Gabbrielli, Simone Martin. Linguaggi di programmazione: Principi e paradigmi (Italian Edition) Paperback McGraw-Hill Italia, 2011. Hanne Riis Nielson, Flemming Nielson. Semantics With Applications: A Formal Introduction. Wiley, 1992.