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.
- Assignments are reserved only for students attending the course the first time this semester
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:
- Study the input language used by the security protocol verifier Proverif and how it has been (partially) formalized in a previous assignment
- 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:
- Possibility to extend the work with a related thesis work
Assignment 2
This assignment is composed of two parts:
- Study of the configuration language used by a packet filter firewall (e.g., IPTables) or by a VPN Gateway (e.g. OpenSwan).
- 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:
- Possibility to grant more assignments with different languages
- Possibility to extend the work with a related thesis work
Assignment 3
This assignment is composed of two parts:
- 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)
- Produce another compiler that reads the QR code and it executes the commands that are coded
Other information:
- Possibility to grant more assignments with different languages
- More information on the argument: https://doi.org/10.1109/ETFA52439.2022.9921530 (download from Polito network)
- Possibility and suggestion to extend the work with a related thesis work
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:
- Possibility to grant more assignments with different languages
- Possibility and suggestion to extend the work with a related thesis work
Assignment 5
This assignment is composed of two parts:
- Perform a theoretical study about transformer models used for natural language processing (NLP)
- 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.
If you found any error, or if you want to partecipate to the editing of this wiki, please contact: admin [at] skenz.it
You can reuse, distribute or modify the content of this page, but you must cite in any document (or webpage) this url: https://www.skenz.it/compilers/assignments20222023