On Wikipedia you can readily find descriptions of such computational formalisms as

- Finite State Machines,
- Push-Down (Stack) Automata,
- Turing Machines,
- Petri Nets,
- Lambda Calculus,
- Combinatory Logic,
- Formal Grammars,
- Cellular Automata,
- etc.

The definition of such formalisms involves
both *syntax* and *semantics*.
Usually, these definitions are given in some mathematical framework,
like Set Theory and First-Order Predicate Logic.

In this graduation project,
we want to provide definitions for these computational formalisms
using concepts and tools from **Model-Driven Software Engineering**.
Thus, we need metamodels to define the abstract syntax and semantics,
possibly supported by model transformations.
One or more concrete syntax definitions might also be useful.
Consequently, these definitions will not only be mathematically precise,
but also machine accessible.

Furthermore, we want these model-based definitions to follow the same style, so that it becomes easy to combine them, and to convert between them.

**Expected interests and skills**:
familiarity with MDSE concepts and tools;
familiarity with formal methods;
mathematical precision

**Graduation period**: 6 months

**Graduation supervisor**:
dr. T. Verhoeff (T.Verhoeff@tue.nl, +31-40-247-4125)