Introduction to Theoretical Computer Science
Instructor: Vitaly Skachek
Assistant: Reimo Palm
Lecture: Thursday 12:15 - 14:00, Ülikooli 17-219 (Paabel 219)
Practice: Monday 12:15 - 14:00, J. Liivi 2-111
Office hours:
- Vitaly Skachek: Monday 15:30-17:30, Paabel 224
- Reimo Palm: to be announced
Language of instruction: English
Note: The students in Computer Science curriculum, who started their Bachelor studies in Fall 2015/2016, are allowed to choose one course from MTAT.05.125 Introduction to Theoretical Computer Science and MTAT.06.008 Artificial Intelligence I as a part of the degree requirements. In a case of doubt, please check your eligibility with the study coordinator.
Announcements
There will be no lecture on Thursday, December 1st, due to the anniversary of the national university.
Final exam
Final exam on December 19th, 2016:
Midterm exam
Midterm exam on January 9th, 2017:
Midterm exam on October 31st, 2016:
Literature
- Michael Sipser, Introduction to the Theory of Computation
- Jiri Matousek and Jaroslav Nesetril, An Invitation to Discrete Mathematics
Course description
This is a bachelor-level introductory course into the theory of computer science. The course will emphasize mathematical foundations of computer science, and will focus on analysis and proofs. The course will not focus on implementations and programming.
In the first few weeks we will briefly cover basic counting techniques in combinatorics. Then, approximately half of the semester will be devoted to the automata theory. The second half of the semester will be devoted to computational models, Turing machines and NP-hardness.
Grading policy
There will be a number of homeworks, the mid-term and final exams. The homeworks and exams are evaluated on the scale 0-100. The final grade is taken as a weighted average of homeworks and exams, and translated into "A"-"F" scale. The composition of the grade is: homeworks (30%), mid-term exam (30%) and final exam (40%). The homeworks will mainly contain questions of theoretical and mathematical nature, and typically will not include programming tasks.
Syllabus
The following is a preliminary list of topics (some deviations from this list are possible):
Part 1: Enumerative combinatorics
- Permutations and combinations
- Newton’s binomial theorem
- Inclusion-exclusion principle
Part 2: Automata theory
- Deterministic and non-deterministic finite automata
- Regular expressions and regular languages
- Context-free languages
Part 3: Computability theory
- Turing machines
- Undecidable problems
- Equivalences between different models of Turing machines
- SAT and Cook's theorem
- Examples of NP-complete problems