Skip to main content

Computability and computational complexity

2025/2026
Programme:
Interdisciplinary University Study Programme Computer Science and Mathematics
Year:
2 year
Semester:
first
Kind:
mandatory
ECTS:
6
Language:
slovenian
Course director:

Uroš Čibej

Hours per week – 1. semester:
Lectures
3
Seminar
0
Tutorial
0
Lab
2
Content (Syllabus outline)

Mathematical Introduction
The first part of the course will cover the mathematical fundamentals that are crucial for understanding complexity. We will address:
• Proof techniques: A review of basic proof methods, focusing on what students have learned in Discrete Structures.
• Representation of data, problems, and languages: How to formally model computational problems mathematically.
• Bijections: The importance of bijective mappings in the context of comparing the sizes of sets.
• Diagonalization: A powerful tool for proving the existence of uncomputable and more complex problems.


Introduction to Computational Models (Automata)
We will explore the initial abstract models of computation that serve as the foundation for understanding more complex models. The content includes:
• Automata and their equivalences: Deterministic and non-deterministic finite automata.
• Regular expressions (RE): The connection between automata and formal languages.
• The Pumping Lemma: A method for proving that certain languages are not regular.
• The Myhill-Nerode theorem: A key theorem for minimizing automata.


The General Model of Computation and Uncomputability
This section will introduce the universal model of computation and its inherent limitations. We will cover:
• The Turing Machine (TM) and its variations: The universal model of computation and its robustness.
• The Universal Turing Machine: A concept that allows for the simulation of any arbitrary Turing machine.
• Uncomputability: The existence of problems for which no algorithm can be found.
• Reductions: The fundamental mechanism for proving that problems are related to one another.
• Rice's Theorem: An important theorem on the uncomputability of non-trivial properties of Turing machine languages.


Complexity
In the final part, we will focus on classifying problems based on their computational difficulty. The content includes:
• Deterministic and non-deterministic complexity classes: The class P as a collection of "easy" problems and the class NP as a collection of "harder" problems.
• P and NP (and PSPACE): An in-depth analysis of these classes, including Savitch's theorem, which relates deterministic and non-deterministic space.
• Karp reductions: Techniques for proving that a problem is NP-complete.
• The Cook-Levin theorem: The foundational theorem that proves the satisfiability problem (SAT) is NP-complete.
• Examples of NP-complete problems: We will discuss classic examples such as satisfiability (SAT), cliques, graph coloring, subset-sum, Hamiltonian cycle (HC), and others.

Readings
  1. Sipser, M. Introduction to the Theory of Computation. Publisher: PWS Publishing, Year: 2013.
  2. Hopcroft, J.E., Motwani, R., Ullman, J.D. Introduction to Automata Theory, Languages, and Computation. Publisher: Addison-Wesley, Year: 2007.
  3. Barak, B. Introduction to Theoretical Computer Science. Prosto dostopen učbenik (introtcs.org); 2025
Objectives and competences

Major part of the course is devoted to computability and computational complexity theory emphasizing on application on various disciplines of computer science. In part the course covers the historical development of the field as well as its recent achievements, again focusing on practical problem solving.

Intended learning outcomes

After completing the course, the student will be able to:
• Understand the basic models of computation: The student will have a solid grasp of the operation and use of finite automata, regular languages, expressions, and grammars.
• Recognize the limits of computation: The student will be introduced to the universal model of computation with the Turing machine and will understand the concept of computable and uncomputable problems.
• Connect theory to reality: The student will understand the Church-Turing thesis of computability and the relationship between different classes of languages (computable, computably enumerable, uncomputable) and problems (decidable, semi-decidable, undecidable).
• Identify unsolvable problems: The student will be introduced to some classic unsolvable computational problems, which will reinforce their understanding of the limits of computation.
• Understand the role of non-determinism: The student will grasp the importance of non-determinism in computation and its influence on the computational models discussed.
• Analyze problem complexity: The student will understand the time and space complexity of computational problems and be familiar with basic complexity classes (e.g., P, NP, PSPACE).
• Apply advanced concepts: The student will understand the concepts of NP-completeness and NP-hardness and will become familiar with the method of proving NP-completeness through reduction, with a focus on the satisfiability problem (SAT) and other key NP-complete problems.

Learning and teaching methods

Lectures and exercise groups, homework assignemnts.
Frequent homework assignemts shall not be time consuming. Some of the homework assignments will be more demanding – projects – which may be distibuted to students divided in groups.

Assessment

Continuing (homework, project work)
Final (written and oral exam)

Grading: 6-10 pass, 5 fail (according to the rules of University of Ljubljana).

Lecturer's references
  1. ČIBEJ, Uroš, LI, Aaron, MIKLÓS, István, NASIR, Sohaib, SRIKANTH, Varun. Constructing bounded degree graphs with prescribed degree and neighbor degree sequences. Discrete applied mathematics. 2023
  2. ČIBEJ, Uroš, SLIVNIK, Boštjan, ROBIČ, Borut. The complexity of static data replication in data grids. Parallel computing, 2007
  3. ČIBEJ, Uroš, ROBIČ, Borut, MIHELIČ, Jurij. Empirical estimation of the halting probabilities. Computability in Europe, 2014
  4. ČIBEJ, Uroš, MIHELIČ, Jurij. Improvements to Ullmann’s algorithm for the subgraph isomorphism problem. International journal of pattern recognition and artificial intelligence.
  5. ČIBEJ, Uroš, MIHELIČ, Jurij. A polynomial-time algorithm for recognizing subgraph-symmetry-compressible graphs, MATCOS 2019
  6. ČIBEJ, Uroš, FÜRST, Luka, MIHELIČ, Jurij. A symmetry-breaking node equivalence for pruning the search space in backtracking algorithms. Symmetry.