Compulsory course of the Computer Science and Engineering major.
Teacher: Prof. Stavros Tripakis (professor responsible for the course, and teacher for Spring 2018)
Teaching Period: III - IV (Spring). The Course starts on Tuesday 02.01.2018, 10:15 - 12:00, T1 / C202 Tietotekniikka
- Lectures: Tuesdays 10:15 - 12:00, starting 02.01.2018 in T1 / C202 Tietotekniikka
- Mondays 14:15 - 16:00 TU3 / 1194 TUAS Maarintie 8, starting 8.01.2018
- Tuesdays 16:15 - 18:00 T6 / A136 Tietotekniikka, starting 9.01.2018
- Wednesdays 10:15 - 12:00 T6 / A136 Tietotekniikka, starting 10.01.2018
- Thursdays 12:15 - 14:00 T6 / A136 Tietotekniikka, starting 12.01.2018
- Fridays 10:15 - 12:00 T5 / A133 Tietotekniikka, starting 13.01.2018
- Lectures: 24h (2 hour lectures, once a week)
- Exercises in small groups
- Independent work
- Exam: 3h
Learning Outcomes: Theoretical computer science comprises the science of computation, and the science of software. Science is knowledge that helps us make predictions. The stronger the science, the stronger the predictions. The science of computation tells us what is computation, what are the different types of computing machines, and what are their computing powers. Using this science, we can predict (indeed, prove!) that some computational problems are easy, some are hard, and some are impossible to solve! The science of software allows us to make predictions about the programs that we write: will my program always terminate? might it crash? will it always produce the right result? etc. In this course you will learn the basic models of computation (finite automata, regular expressions, context-free grammars, Turing machines). You will solve a set of computerized assignments where you will build such computing machines and answer fun questions about them. You will also learn the foundations behind the science of software, which are formal logic and theorem proving, using the Coq proof assistant.
Content: Finite automata and regular languages. Context-free grammars and pushdown automata. Turing machines and computability. Basics of computational complexity. Logic and theorem proving with Coq.
Assessment Methods and Criteria: Exam, computerized assignments, and home assignments
Study Material: Lecture notes and slides; Textbook (recommended but not obligatory) Michael Sipser, Introduction to the Theory of Computation; and other separately announced study material
Substitutes for Courses: ICS-C2000 Theoretical Computer Science, T-79.1001 Introduction to Theoretical Computer Science T (4 cr), T-79.1002 Introduction to Theoretical Computer Science Y (2 cr)
Prerequisites: CS-A1110 / CSE-A1110 Programming 1 and CS-A1120 / ICS-A1120 Programming 2 or CS-A1111 / CSE-A1111 Basic Course in Programming Y1 and CS-A1121 / CSE-A1121 Basic Course in Programming Y2, MS-A0401/A0402/A0409 Foundations of discrete mathematics.
Grading Scale: 0-5
Lecturer: Prof. Stavros Tripakis