72940 - Computational Models And Languages M

Academic Year 2017/2018

  • Docente: Enrico Denti
  • Credits: 8
  • SSD: ING-INF/05
  • Language: Italian
  • Teaching Mode: Traditional lectures
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Engineering (cod. 0937)

Learning outcomes

This 64-hour course aims to provide a rational view over the fundamental concepts of programming languages, relating them to the different computational models and to the problem of language translation and recognition. More precisely, we discuss the main formal methods for language definition, in terms of syntax and semantics, for both programming languages and specification languages, and relate them to different computational models. The main techniques for language evaluation and recognition are also presented. Students will then be able to define reasonably simple languages understanding their properties, implementing the corresponding interpreters, and evaluating the pros and cons of different choices/computational paradigms in application design. Multi-paradigm and multi-language issues are also presented.

Course contents

The course aims to provide a rational view over the fundamental concepts of programming languages, relating them to the different computational models and to the problem of language translation and recognition. Detailed contents: Formal description and implementation of programming languages: grammars and Chomsky classification. Relationship between grammars and language interpreters/translators: lexical analysis, top-down and bottom-up techniques for the syntactical analysis of regular languages and context-free languages. Overview on methods for the formal description of the semantic aspects of a language. Basic concepts about the structure  and construction of interpreters/compilers, and their run-time support: examples in the java language. Semi-automated tools for parser generation: JavaCC/JTB, xtext, and others.  Introduction to non-imperative programming styles: Prolog as a tool to ease parser construction from the language formal semantics. Hybrid applications mixing Prolog and Java. Multi-paradigm and Multi-language programming: Javascript as an example of a (dynamic) functional language with a prototype-based object model; Scala as a modern, blended programming language on the Java platform. Basic introduction to the lambda calculus.

Readings/Bibliography

Please refer to the course's web portal for up-to-date information.

Teaching methods

Powerpoint slides (whose PDF printouts are available from the teacher's Web portal before the corresponding lecture) are projected and discussed during class hours. Exercises are continuously interleaved with theoretical concepts and immediately discussed. Autonomous lab activities are welcome and promoted by suggesting ideas and possible test projects.

Assessment methods

The exams consists of an oral discussion; if the student also selected the extra Work Project in this subject, the oral discussion can also include the presentation and discussion of the corresponding work project. However, it is also possible to discuss the main module and the extra work project separately.

Teaching tools

The teacher's web portal provides updated information, copy of the slides projected and discussed during the lecture hours, some extra material, and suggested books.

Links to further information

http://enricodenti.disi.unibo.it

Office hours

See the website of Enrico Denti