Table of Contents

Assignments 2022/2023 (Formal Languages and Compilers course)

Rules

The programming part of the exam can be performed by doing an assignment.

Students have to send an application for the assignment to riccardo.sisto [at] polito.it and stefano.scanzio [at] polito.it within 13 April, 2023.
The application must contain a curriculum, which has to include the known software and the list of passed exams, both master and bachelor degrees, with the related scores.
In addition, students have to provide the list of assignments they are interested in, sorted by preference (most preferred first).
The allocation of the assignments to students will be communicated within 20 April, 2023.
Possibly, depending on the curriculum or on the number of requests, some requests may not be accepted.

Assignment 1

This assignment is about building a compiler for the input Domain-Specific Language used by the security protocol verifier Proverif (https://prosecco.gforge.inria.fr/personal/bblanche/proverif/).

The assignment is composed of two parts:

  1. Study the input language used by the security protocol verifier Proverif and how it has been (partially) formalized in a previous assignment
  2. Study the parser for a subset of this language, which was developed in a previous assignment, and complete it with the parts of the language that are missing.

Other information:

Assignment 2

This assignment is composed of two parts:

  1. Study of the configuration language used by a packet filter firewall (e.g., IPTables) or by a VPN Gateway (e.g. OpenSwan).
  2. Development of a translator that recognizes the language (or part of it, according to the complexity), and translates it into a JSON or XML document.

Other information:

Assignment 3

This assignment is composed of two parts:

  1. Generate a compiler that given a specific input language compiles it in a QR code (an idea of input language, to be discussed, is a language aimed to lead a person in a certain place following specific directions, e.g., treasure hunting)
  2. Produce another compiler that reads the QR code and it executes the commands that are coded

Other information:

Assignment 4

This assignment is similar to Assignment 3, but the target is an RFID. Consequently, part of the assignment is to study the technology to upload binary/hexadecimal data in the RFID. In this case, the language will be less complex that assignment 4, for which the code to generate and read the QR code is already available.

Other information:

Assignment 5

This assignment is composed of two parts:

  1. Perform a theoretical study about transformer models used for natural language processing (NLP)
  2. Build a small example in python that illustrates the use of such models

Assignment 6

Implement using flex e bison a program similar to let that allows to perform operations also using double numbers and mathematical functions (e.g., sin(), cos(), sqrt(),…).
The main idea is to try integrating this tool in new Linux distributions.