2024
Automata and Programming Languages
Name: Automata and Programming Languages
Code: INF13195L
6 ECTS
Duration: 15 weeks/156 hours
Scientific Area:
Informatics
Teaching languages: Portuguese
Languages of tutoring support: Portuguese, English
Regime de Frequência: Presencial
Sustainable Development Goals
Learning Goals
- Discuss finite state machines.
- Design or Generate a deterministic finite state machine, a regular expression and a context-free grammar to accept or represent a specified language; Convert among equivalently powerful notations.
- Determine a languages place in the Chomsky hierarchy, key issues in syntax definitions.
- Use formal grammars to specify the syntax of languages, declarative tools to generate parsers and scanners.
- Give a formal semantics and an abstract syntax tree for a small language.
- Explain how programs that process other programs treat the other programs as their input data and the benefits of having program representations other than strings of source code.
- Write a program to process some representation of code.
- Design or Generate a deterministic finite state machine, a regular expression and a context-free grammar to accept or represent a specified language; Convert among equivalently powerful notations.
- Determine a languages place in the Chomsky hierarchy, key issues in syntax definitions.
- Use formal grammars to specify the syntax of languages, declarative tools to generate parsers and scanners.
- Give a formal semantics and an abstract syntax tree for a small language.
- Explain how programs that process other programs treat the other programs as their input data and the benefits of having program representations other than strings of source code.
- Write a program to process some representation of code.
Contents
1. Words, Languages and Expressions
Alphabets, Words and Languages, Regular Expressions
2. Finite automata
Deterministic Finite Automata, Non-deterministic computing, Elimination of Non-Determinism, Minimization and Composition of DFA, The Pumping Lemma
3. Grammars and Push-down Automata
4. Syntax analisys
Syntactic Analysis and Clean Grammars, LL(k) and LR(k) Grammars
5. Representation and Execution of Programs, Abstract Syntax Tree, Semantic Analysis, Table of symbols, Name Analysis, Type systems, Checking and Inference Types, Support for a Interpreter
Alphabets, Words and Languages, Regular Expressions
2. Finite automata
Deterministic Finite Automata, Non-deterministic computing, Elimination of Non-Determinism, Minimization and Composition of DFA, The Pumping Lemma
3. Grammars and Push-down Automata
4. Syntax analisys
Syntactic Analysis and Clean Grammars, LL(k) and LR(k) Grammars
5. Representation and Execution of Programs, Abstract Syntax Tree, Semantic Analysis, Table of symbols, Name Analysis, Type systems, Checking and Inference Types, Support for a Interpreter
Teaching Methods
Theoretical classes with presentation of contents, explanation of applications and illustration of examples. Practical classes with resolution of exercises and development of examples.
Assessment
Continuous assessment consists of two frequencies (10 points each; 20 points total = 100% of the final grade).
The final assessment consists of an exam (20 points = 100% of the final grade).
The final assessment consists of an exam (20 points = 100% of the final grade).
Teaching Staff
- Francisco Manuel Gonçalves Coelho [responsible]