Theory of Computation

This course offers an introduction to the theory of computation. It explores key topics such as formal models of languages, finite automata and regular languages, context-free languages, Turing machines and the theory of computability, and glimpses of computational complexity theory.

The main objective is to deepen the student’s understanding of computer science by introducing a philosophical perspective—engaging with fundamental questions like

What is computable and what is not?

and

Why are some computational problems easy, others difficult, and some impossible to solve?

The concepts and techniques presented are intentionally foundational, designed to remain relevant regardless of changes in hardware or software trends.

The course includes significant mathematical content. Students are expected to have prior experience with writing mathematical proofs and a general level of mathematical maturity. For those who meet these criteria and are curious about the theoretical limits of computation, the course promises to be both intellectually stimulating and enjoyable.

Administrative Information

Instructors
Ilario Bonacina (email)
groups: 12P 21P 21L
Office: Omega-223
Office hours: Wed 11–13
Antoni Lozano (email)
groups: 22P 22L
Office: Omega-233
Office hours: send email
Enrique Romero (email)
groups: 11P 11L 12L
Office: Omega-319
Office hours: send email

For administrative questions on the course, contact one of the coordinators (Ilario Bonacina or Antoni Lozano).

Announcements

All announcements and homeworks assignments will be done through the racó.

Structure of the course

The main characteristic of the teaching methodology is self-learning, which is based on the use of instructional material to understand the theoretical foundations of the subject, as well as the solving of problems on the board that reinforce this theoretical knowledge.

The instructor introduces the basic theoretical foundations of each topic and solves some problems. Students learn the theory during their personal study time by reviewing the topics indicated by the instructor through the bibliography, videos, and other supplementary materials such as lecture notes, textbooks, and lists of solved problems—all freely accessible through the web.

During problem-solving sessions, students go up to the board to explain solutions to problems that were previously assigned to them. The instructor intervenes to correct a solution, clarify an argument, or highlight aspects that are considered relevant and were not fully explained by the student. The instructor also takes note of each presentation to consider it in the course assessment.

During lab sessions, students try to solve problems on the computer, which are automatically evaluated. The instructor is present to address any questions the students may have. Students may use these sessions to prepare the problems they were previously assigned, but also to study the theoretical material if they have not already done so on their own, and to ask questions about the theory.

References

The main book we will follow for the course is (Sipser 2013). Books in Catalan covering the topics of the course are (Cases and Màrquez 2003) and (Serna et al. 2004) . Videos covering most of the material of the course are available in English, Catalan, and Spanish.

Cases, Rafel, and Lluís Màrquez. 2003. Llenguatges, Gramàtiques i Autòmats : Curs Bàsic. 2a ed. en Aula politècnica. Aula Politècnica; 41. FIB. Barcelona: Edicions UPC. https://discovery.upc.edu/permalink/34CSUC_UPC/8e3cvp/alma991002699299706711.
Hopcroft, John E., Rajeev Motwani, and Jeffrey D. Ullman. 2007. Introduction to Automata Theory, Languages, and Computation. 3rd ed. Pearson Addison Wesley. https://discovery.upc.edu/permalink/34CSUC_UPC/1q393em/alma991003933959706711.
Kozen, Dexter. 1997. Automata and Computability. Undergraduate Texts in Computer Science. New York: Springer. https://discovery.upc.edu/permalink/34CSUC_UPC/8e3cvp/alma991001527289706711.
Serna, Maria José, Carme Àlvarez, Rafel Cases, and Antoni Lozano. 2004. Els Límits de La Computació : Indecidibilitat i NP-Completesa. 2a ed. Aula Politècnica.FIB ; 60. Barcelona: Edicions UPC. https://discovery.upc.edu/permalink/34CSUC_UPC/8e3cvp/alma991004025469706711.
Sipser, Michael. 2013. Introduction to the Theory of Computation. Third edition. Boston, MA: Cengage Learning. https://discovery.upc.edu/permalink/34CSUC_UPC/1q393em/alma991004025429706711.

Evaluation

Presentations at the blackboard (grade E: between 0 and 10)
For each problem set, every student is randomly assigned one exercise to solve and present on the blackboard. The grade E takes all presentations into account.
Midterm 1 (grade P_1: between 0 and 10)
November 3 10:30–12:30
Midterm 2 (grade P_2: between 0 and 10)
January 9 08:00–11:00
Final exam (grade F: between 0 and 10)
January 19 11:30–14:30
Continuous assessment (grade C: between 0 and 10)
It is computed using the formula

C =40\%\,P_1 + 40\%\,P_2 + 20\%\,E.

There are two ways to pass this course: either without taking the final exam or by taking it. The final grade is computed differently depending on the option chosen:

  • Without taking the final exam, the final grade is C.

  • Taking the final exam, the final grade is

    \max\left(F,\ 50\%\, F + 50\%\,C\right).

The evaluation of transversal competences G7.3 and G9.3 is carried out individually by each instructor for each student in their group, based on the public presentations in the continuous assessment. The evaluation of these skills does not affect the course grade.