# Formal Languages and Automata Theory, 2014

**DAVID GRIOL BARRESARACELI SANCHIS DE MIGUELMARÍA PAZ SESMERO LORENTEAGAPITO LEDEZMA ESPINOJUAN MANUEL ALONSO WEBER**

Departament of Computer Science

Universidad Carlos III de Madrid

Area:

Computer Science and Artificial Intelligence

Degree:

Bachelor's Degree in Computer Science and Engineering

December, 2014

Theorethical and Lab hours: 6 ECTS, 1.5 theorethical hours and 1.5 practical hours each week.

Total hours: 148.

**PRERREQUISITES AND RECOMMENDED PREVIOUS KNOWLEDGE**

- Programming.
- Algorithms and Data Structures.

**GENERAL DESCRIPTION OF THE SUBJECT**

Basic course on Automata Theory and Formal Languages aimed at students of the Computer Science Degree . The common competences of the course to Computer Science are:

- Knowledge and application of basic algorithms and procedures of Computer Science to design solutions to problems, and analyze the suitability and complexity of the proposed algorithms.
- Knowledge and application of basic techniques and principles of intelligent systems and their practical application.

**OBJETIVES: KNOWLEDGE AND SKILLS**

The main cognitive objectives and competences of the course are:

- Understand the theories to describe formal languages.
- Understand the concept of formal grammar and their types, as well as the type of language.
- Understand the concept of finite automaton as a regular language recognizer.
- Understand the concept of regular expression as a description of a regular language.
- Understand the concept of a pushdown automata to recognize any context-free language
- Understand the relation between grammars, languages and recognizers.
- Understand the principles and operation of a Turing Machine and its different types.
- Understand the concept of computational complexity.
- To know the methods to calculate the computational complexity.
- Understand the concept of P and NP complexity classes.
- Understand the limits of computation.

The main procedural objectives and competences of the course are:

- Assess how to address a problem of recognition of words for a certain grammar.
- Elaborate correctly the phases for the construction of a recognizer, from the description of the grammar to the design of the automaton.
- Combine and extrapolate the acquired knowledge about developing a lexical or

syntactic recognizer for a grammar. - Acquire skills to assess the efficiency of a given automaton in the task of recognizing a specific, also to discern whether the automaton is minimal or not.
- Learn the practical application of theoretical models of the exposed computation/calculation

devices (Grammars, Finite Automata, Pushdown Automata, and Turing machines) for

solving problems or arithmetic computation. - Know the methods to calculate the computational complexity of an algorithms, an automaton or a Turing machine.
- Acquire the ability to transform a formal statement into an informal statement.

The main attitude objectives and competences of the course are:

- Acquire the ability to analyze computational problems and its solutions.
- Concern on quality.

**TEACHING MATERIAL**

The course includes files with an explanation of the most important theoretical concepts, guided summaries with the main objectives of each unit, proposed exercises with the corresponding solutions, practical activities and lab sessions, and partial and global assessments with solutions .

**ASSESSMENT ACTIVITIES OR PRACTICAL ASSIGNMENTS**

Al the end of the course, students should be able to:

- Solve the proposed final exams in the specific time that it is indicated.

- Carry out the proposed practical and lab exercises for each one of the units.
- Understand and control basic concepts of Discrete mathematics, Logics, Algorithms and Computational Complexity, and their application for the resolution of problems related to Engineering.