Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


PROGRAMMING LANGUAGES AND SOFTWARE VERIFICATION
LINGUAGGI DI PROGRAMMAZIONE E VERIFICA DEL SOFTWARE

A.Y. Credits
2022/2023 9
Lecturer Email Office hours for students
Alessandro Aldini Tuesday 11-13 at the lecturer office, or else by appointment
Teaching in foreign languages
Course with optional materials in a foreign language English
This course is entirely taught in Italian. Study materials can be provided in the foreign language and the final exam can be taken in the foreign language.

Assigned to the Degree Course

Applied Informatics (L-31)
Curriculum: PERCORSO COMUNE
Date Time Classroom / Location
Date Time Classroom / Location

Learning Objectives

This course aims to introduce the student to the principles and foundations of programming languages, in order to understand their structure and correctly interpret the behavior of programs. First of all, this goal is pursued through the study of the theory of formal languages, their syntax definition tools (through grammars and automata), and the formalization of their semantics. Then, in the context of such formal tools, we address some techniques to model complex software systems and verify their properties through the use of methodologies based on automata and logics.

Program

01. Foundations of programming languages:
      01.01 Theory of formal languages.
      01.02 Chomsky classification of sentential form grammars. 
      01.03 Theory of automata and Turing machines.
      01.04 Computability.

02. Finite-state automata:
      02.01 Deterministic finite-state automata.
      02.02 Nondeterministic finite-state automata.
      02.03 Nondeterministic finite-state automata with epsilon-transitions.
      02.04 Minimization and equivalence for finite-state automata.

03. Regular languages:
      03.01 Finite-state automata and linear grammars.
      03.02 Closure properties of regular languages and pumping lemma.
      03.03 Regular expressions.
      03.04 Regular expressions and finite-state automata.

04. Context-free languages:
      04.01 Free grammars and syntax trees.
      04.02 Chomsky normal form.
      04.03 Properties of context-free languages and pumping lemma.

05. Pushdown automata and parsing:
      05.01 Pushdown automata and relation with free grammars.
      05.02 Top-down parsing.
      05.03 LL(1) grammars.
      05.04 Bottom-up parsing.
      05.05 SLR, LR(1), and LALR(1) grammars.

06. Denotational semantics:
      06.01 Denotational semantics for non-cyclic sequential programs.
      06.02 Denotational semantics for the while operator.
      06.03 Denotational semantics with blocks and procedures.

07. Operational semantics:
      07.01 Natural semantics for sequential programs.
      07.02 Natural semantics with blocks and procedures.
      07.03 Structural operational semantics.

08. Modeling and verification of reactive systems:
      08.01 Kripke structures.
      08.02 Linear temporal logic.
      08.03 Computation tree logic.
      08.04 Model checking algorithms.

09. Laboratory activity:
      09.01 Finite state machines.
      09.02 Modeling and verification in NuSMV.
      09.03 Complex reactive systems in NuSMV.

Bridging Courses

Although there are no mandatory prerequisites for this exam, students are strongly recommended to take it after Object-Oriented Programming and Modeling, Software Architecture and Engineering, Operating Systems, by respecting the prerequisites of these courses.

Learning Achievements (Dublin Descriptors)

Knowledge and understanding: the student will be able to understand the syntax structure, the compiler rules, and the semantics of the most used programming languages, as well as the methodological principles behind the formal methods for design and verification of software systems that are illustrated in the program.

Applying knowledge and understanding: the student will be able to design the base modules of the compilers for programming languages and to specify and verify formally software systems through the tools used in the classrooms.

Making judgements: the student will be able to evaluate the correctness of syntax and semantics of any programming language and to represent and compare formally the several specifications of a software system under design and development.

Communication skills: the student will be able to illustrate in a proper way the semantic features of the programming languages and to describe formally the functionalities and the properties of a software system by using the modeling and verification tools used in the classrooms.

Learning skills: the student will learn how to describe formally syntax and semantics of programming languages and how to model and check software systems.

Teaching Material

The teaching material prepared by the lecturer in addition to recommended textbooks (such as for instance slides, lecture notes, exercises, bibliography) and communications from the lecturer specific to the course can be found inside the Moodle platform › blended.uniurb.it

Teaching, Attendance, Course Books and Assessment

Teaching

Theory lectures and laboratory exercises.

Innovative teaching methods

The classroom lectures will be integrated with laboratory activities based on the problem solving approach, both individually and in group.

Attendance

Although recommended, course attendance is not mandatory.

Course books

The two alternative books: Hopcroft, Motwani, Ullman, "Automi, Linguaggi e Calcolabilità" (Terza Edizione, Pearson) and Aiello, Pirri, "Strutture, logica, linguaggi" (Pearson) cover the topics of sections 01-05. The original version of the former book is Hopcroft, Motwani, Ullman, "Introduction to Automata Theory, Languages, and Computation", Addison-Wesley.

Sections 06 and 07 are inspired by Nielson, Nielson, "Semantics with Applications: An Appetizer" (Springer). Alternative book: Semantica operazionale e denotazionale dei linguaggi di programmazione, Rocco De Nicola (1999, CittàStudiEdizioni, Torino).

The topics of section 08 are covered by Clarke, Grumberg, Peled, Veith, "Model Checking" (Second Edition, MIT Press). 

Section 09 is based on the software tool NuSMV http://nusmv.fbk.eu/

Assessment

Individual project, written exam, and oral exam.

The individual project consists of modeling and verifying a software system with NuSMV. The project specification, one per session and the same for everybody, is published online at least one month before the beginning of every session, with delivery deadline by the noon of two days before the date of the written exam of interest. The project, even if passed, is valid only within the related session. The project text is given by the specification of a real system to model and verify. The student can freely choose the abstraction level of the system, the variants and configurations under analysis, and the properties to verify. Delivery is by email with subject LPVS: consegna progetto name_surname and must include source files with specifications and analysis results, each part adequately commented. The aim of the project is to check the capability of the student in the practical and autonomous use of the acquired skills about the modeling and verification of software. The project must be presented and discussed the same day of the written exam. The lecturer evaluates the compliance of the model with the specifications and the variety of properties taken into account. The project evaluation is sufficient if greater or equal to 6/10.

The written exam can be given only after the delivery of the project related to the same session. Its duration is 90 minutes and it consists of practical exercises related to grammars, automata, and formal semantics (Sections 01-07). Notes and didactical material can be used. The aim of the written exam is to verify the capability of applying the acquired competences concerning the theoretical topics of the program. The lecturer evaluates the correctness of both the proposed solution and the approach followed to get to the solution of the exercises, as well as the methodological rigor. The written exam is sufficient if the result is greater or equal to 12/20.

The oral exam is optional about the course program. The optional oral exam yields a positive or negative adjustment (at most 5 points) to the final mark determined by the sum of the results of project evaluation and written exam. The objective of the oral exam is to estimate making judgements as well as communication and learning skills.

For texts of projects and written exams, see this link.

Disability and Specific Learning Disorders (SLD)

Students who have registered their disability certification or SLD certification with the Inclusion and Right to Study Office can request to use conceptual maps (for keywords) during exams.

To this end, it is necessary to send the maps, two weeks before the exam date, to the course instructor, who will verify their compliance with the university guidelines and may request modifications.

« back Last update: 09/05/2023

Il tuo feedback è importante

Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

Posta elettronica certificata

amministrazione@uniurb.legalmail.it

Social

Università degli Studi di Urbino Carlo Bo
Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
Partita IVA 00448830414 – Codice Fiscale 82002850418
2024 © Tutti i diritti sono riservati

Top