Description Objectives Contributions Publications

OCaml-Flat on the Ocsigen framework

Formal languages and automata theory (FLAT) is a core subject in Computer Science, but the formal nature of the matter constitutes a difficulty to many students. It helps to have an interactive environment supporting the definition and testing of language generators and language recognizers. The programming language OCaml is a natural candidate to the implementation of such environment: it is a very clean and elegant language supporting the functional paradigm and with strong symbolic processing abilities.

This MSc Dissertation proposal aims at promoting the use of OCaml in the Portuguese speaking academic community, namely by providing support to teaching approaches and tools. In particular, it aims at extending and consolidating the OCaml software user base and teaching materials in the Portuguese language for Computational Logic and Foundation of Computing courses in undergraduate Computer Science degrees.


The MSc student is expected to develop a graphical interface for OCaml-Flat using the Ocsigen framework. Other similar systems, such as JFLAP, should be studied. The main general functionalities:

  • Edition of finite automata, push-down automata and Turing machines, displayed as graphs.
  • Visualization of generation processes.
  • Visualization of recognition processes, given an input string.

It is assumed that, at least the components of OCaml-Flat concerning regular expressions and finite automata are already available. Some care should be taken, so that the approach is adaptable to other mechanisms.

Probably, half of the effort of this project will consist in gaining in-depth knowledge of the Ocsigen framework and how to create graphical rich interactive Web pages using the framework.

Expected Contributions

An effective graphical interactive system with functionalities that would bear comparison with a system like JFLAP. Develop a general approach to add a graphic interface to an OCaml module, trying no to change the module at all. Clean design with everything well organized and with extensibility in mind. The system should be tested using a Web browser in a conventional computer and in a smartphone.

Publications and Tools