Enter a brief description of your changes
(Required)
Minor changes are by default collapsed in the page history.
No changes
The page does not exist yet.
Failed to load changes
Version by on
Leave Collaboration
Are you sure you want to leave the realtime collaboration and continue editing alone? The changes you save while editing alone will lead to merge conflicts with the changes auto-saved by the realtime editing session.
By the end of the course, the student will learn the basic knowledge concerning analysis and design of programming languages, specification of computational systems, and for understanding how to use computational models prevalently used in software engineering. In particular, the student will be able to:
design software based on the logic paradigm and Prolog;
design a simple programming language and develop an interpreter or translator;
specify syntactic and semantic aspects of a computational system;
understand the basic computational models proposed in scientific literature, and use them to analyse complex computational systems.
course contents
Main aspects of the theory of computation. Computation and interaction. Automata and expressiveness: the Turing machine. Goedel incompleteness. Algorithms. Abstract Data Types. Using MAUDE language to specify abstract data types and algorithms.
The Prolog Language. Relational interpretation of Prolog, syntax, SLD tree, cut operator, programming examples, procedural interpretation. Metaprogramming and metainterpretation. The tuProlog technology: Java-Prolog integration.
Logics. Propositional logics. First order logic. The logic interpretation of Prolog. Elements of other logics.
Syntax, Grammars and Parsers. Formal grammars. Deriving a sentence. Chomsky classification. BNF and Extended BNF Grammars. Ambiguity. Translating Grammars. Regular Expressions. Finite state parsers. Imperative and logic parsers. Generating sentences. Parsers for type 2 Grammars. LL Grammars. Exercise in Java and Prolog. The JavaCC tool. Exercises on defining new languages.
Operational semantics of languages. Simple examples. Formalisms. Petri Nets. using MAUDE for operational semantics and model-checking
Advanced Models. Process algebras, Stochastic systems (SPIM , PRISM). A survey on existing models and tools proposed in literature.