Go to:
You are here: Start > L.EIC010

Theory of Computation

Code: L.EIC010     Acronym: TC

Classification Keyword
OFICIAL Informatics Engineering and Computing

Instance: 2021/2022 - 2S

Active? Yes
Web Page: https://teams.microsoft.com/l/team/19%3aPYp8-Nf3nOSkK5vTFLRHtpe8rl3R-9RQNDx-ugcqq5o1%40thread.tacv2/conversations?groupId=9df342d6-abf2-44d0-a4ba-f9a3bc987768&tenantId=b7821bc8-67cc-447b-b579-82f7854174fc
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Bachelor in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L.EIC 439 Syllabus 1 - 6 52 162

Teaching Staff - Responsibilities

Teacher Responsibility
João Manuel Paiva Cardoso
Sandra Maria Mendes Alves
Jácome Miguel Costa da Cunha
Mais informaçõesLast updated on 2022-02-15.

Fields changed: Calculation formula of final grade, URL da página, Melhoria de classificação, Avaliação especial

Teaching language

Suitable for English-speaking students


To prepare students about computing theory topics with a special emphasis on formal language topics.
Students will learn about regular languages, regular expressions, non-regular languages, deterministic and nondeterministic finite automata, context-free languages and grammars, deterministic and non-deterministic pushdown automata, and Turing machines, and how to apply these topics to problems.
Students will be able to express computing problems by using formal languages, automata, and Turing machines.
In addition, students will learn how to formally specify computing problems related to formal languages and prove related statements.

Learning outcomes and competences

At the end of the semester, students should:
- Be capable of identifying the important contributions to computing theory and its protagonists;
- Be capable of identifying the problems that can be solved with finite automata and express them rigorously;
- Be capable of comparing deterministic finite automata (DFAs), non-deterministic finite automata (NFAs), regular expressions, and regular languages;
- Be capable of applying the properties of regular languages;
- Be capable of identifying problems that can be handled by context-free grammars (CFGs);
- Be capable of relating context-free grammars and pushdown automata (PDAs) in the processing of context-free languages;
- Be capable of expressing computing problems by using Turing machines;
- Be capable of relating the studied computing models with their applications in the computability theory and complexity theory.

Working method


Pre-requirements (prior knowledge) and co-requirements (common knowledge)

It is recommended that students have attended the Discrete Mathematics course.


Automata Theory; Finite Automata;
Regular Expressions and Languages;
Properties of Regular Languages;
Context-Free Grammars and Languages;
Pushdown Automata;
Properties of Context-Free Language;
Introduction to Turing Machines.

Mandatory literature

Hopcroft, John E.; Introdução à teoria de autômatos, linguagens e computação. ISBN: 85-352-1072-5

Complementary Bibliography

Sipser, Michael; Introduction to the theory of computation. ISBN: 0-619-21764-2
Sudkamp, Thomas A.; Languages and Machines. ISBN: 0-201-15768-3

Teaching methods and learning activities

In lectures, the contents are formally exposed along with presentation and discussion of examples.
In the tutorial classes, application exercises are proposed.
Weekly, the students are asked to do exercises to check if the basic concepts are being understood by the majority of students.
The foreseen effort beyond classes is about 4h per week.


JFLAP is software for experimenting with formal languages topics. (https://www.jflap.org/)


Physical sciences > Mathematics > Computational mathematics
Physical sciences > Computer science

Evaluation Type

Distributed evaluation with final exam

Assessment Components

Designation Weight (%)
Exame 75,00
Participação presencial 0,00
Teste 25,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 103,00
Frequência das aulas 59,00
Total: 162,00

Eligibility for exams

Distributed evaluation not inferior to 7 marks and a maximum of 3 non-justified absences (25%) on the tutorial classes.

Calculation formula of final grade

AD: Distributed Evaluation (min: 7.0 marks) consists of three components:

- Preparation activities

- Assessment activities

- Challenges

AD Grade (ADG) 
   AD, if AD <= EF+3, OR
   EF+3, otherwise

: final exam (the rules imply that it is necessary to obtain at least 8.75 marks in EF to pass the course)

Final Grade = rounded(0.25 AD + 0.75 EF)

Examinations or Special Assignments


Special assessment (TE, DA, ...)

One of the following possibilities (selected by the student at the beginning of the course):
- Final Exam
- Final Exam (EF) + Activities (AD)

Classification improvement

The final grade can be improved with a classification improvement exam (implies a registration to improve the grade in the course). In the case of improvement, the grade of the exam will be the final grade of TC.


- The pre-requirements are knowledge of Computational Logic and of programming.

- Students that have obtained Distributed Evaluation (AD) in the previous year are able to use their AD grade in the current year.

- The official language of the classes is Portuguese. However, the classes might be given in English.

- All the materials used (including slides and exercises) and all the assessment materials are all in English.

Recommend this page Top
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2024-02-25 at 19:32:34 | Acceptable Use Policy | Data Protection Policy | Complaint Portal