The information on this page is provided from the CSE Study Guide for the academic year 2009–2010 for convenience. Please refer to the study guide as the authoritative source of information on the degree structure.
Professors in charge:
T-79 Prof. Keijo Heljanko
T-119 Prof. Ilkka Niemelä
T-79 Prof. Kaisa Nyberg
T-79 Prof. Pekka Orponen
Theoretical computer science develops and applies mathematical methods to systematic modelling, analysis, and solution of computational problems. Such methods play a central role in the design of software systems and parallel computer architectures, routing protocols of communication networks, cryptography, VLSI design, and the development of programming languages and compilers for them.
The major in theoretical computer science provides the student with working knowledge on modelling and analysing information processing systems, computational complexity theory, and cryptology; and a deep understanding of one or two focus areas of the major:
(see the links for more information).
The goal is to become eligible for post-graduate studies as well as demanding R&D tasks including the ability to analyse large and complex systems and their critical parts using mathematical tools and to apply the latest research results to practical engineering applications.
Undergraduate students enrolled in the Degree Programme of Computer Science and Engineering at TKK can choose theoretical computer science either as a major or a minor study subject. The minor in theoretical computer science is available also for students in other degree programmes. The contents of the major and minor are based on the module structure of the CSE degree programme.
The B.Sc. major in theoretical computer science consists of the Computer Science A1 module together with the intermediate module Theoretical Computer Science A2. This combination of modules makes the student eligible for continuing Master's level major studies in theoretical computer science.
If the basic module Computer Science A1 is taken as part of major B.Sc. degree studies (students in the CSE degree programme), the B.Sc. minor in theoretical computer science consists of the intermediate module Theoretical Computer Science A2.
Students of other degree programmes can study theoretical computer science as a minor by taking the the generic Computer Science B1 module customised with courses in theoretical computer science. After completing the B.Sc. minor in theoretical computer science, the student may continue intermediate A2-level minor master's degree studies and even advanced A3-level major studies in theoretical computer science. See Master's degree studies for further information.
The Department of Information and Computer Science offers Master's degree education in theoretical computer science via the following two ways:
The Master's level major in theoretical computer science consists of the basic module Computer Science A1/Computer Science B1 (theoretical computer science), the intermediate module Theoretical Computer Science A2, and the advanced module Theoretical Computer Science A3. The basic and intermediate modules can already be taken as part of Bachelor's degree studies, in which case the Master's studies can include a minor subject from some other area. See the CSE study guide for further information about the alternatives available.
The Master's level minor in theoretical computer science is formed from one of the two following module combinations:
The modules included in the minor must be separate from those of the major subject area. See the CSE study guides and the TKK degree regulations (Section 24) for more information.
The following module descriptions apply only to the regular degree programmes at TKK. The module structure of the FAdCo Master's programme can be found via the programme's home page.
The basic modules in computer science give the preliminary knowledge required in further studies and applications of theoretical computer science. The Computer Science A1 module is intended for students enrolled in the CSE degree programme; the Computer Science B1 module is available also for students in other degree programmes.
| Course code | Name of course | Credits |
|---|---|---|
| T-106.3101 | Intermediate Course in Programming T2 (C-language) | 6 |
| T-76.3601 | Introduction to Software Engineering | 5 |
| T-79.3001 | Logic in Computer Science: Foundations | 4 |
| S-87.3190 | Computer Architecture | 5 |
| 20 |
Before commencing studies in this module, the student must have completed one of the courses T-106.1203 Basics of Programming L (Java), T-106.1206 Basics of Programming Y (Java), T-106.1207 Basics of programming (Java) [Swedish]. Please note that the course T-106.1208 Basics of Programming Y (Python) does not qualify as a prerequisite course.
The minor module in theoretical computer science consists of the following mandatory courses. Completing these courses makes the student eligible for continuing A2- and A3-level studies in theoretical computer science.
| Course code | Name of course | Credits | |
|---|---|---|---|
| T-106.1223 | Data Structures and Algorithms Y | 5 | |
| T-106.1243 | Intermediate Course in Programming L1 (Java) | 6 | |
| T-79.1001 | Introduction to Theoretical Computer Science T | 4 | |
| T-79.3001 | Logic in Computer Science: Foundations | 4 | |
| The above list of mandatory B1-level courses should be completed with courses chosen from the following list to cover a total of 20 credits not shared with any other module in the degree studies. | |||
| T-106.3101 | Intermediate Course in Programming T2 (C-language) ** | 6 | |
| AS-0.1102 | C/C++ Programming ** | 4 | |
| S-87.3190 | Computer Architecture | 5 | |
| T-110.1100 | Introduction to Datacommunications and Multimedia Technology | 5 | |
| T-76.3601 | Introduction to Software Engineering | 5 | |
| T-76.1143 | Database Management | 5 | |
| T-121.2100 | Introduction to User-Centred Product Development | 2 | |
| T-61.2010 | From Data to Knowledge | 4 | |
| T-61.2020 | From Data to Knowledge Exercise Project | 1 | |
| ≥20 | |||
| ** The module may include either one of the courses T-106.3101 and AS-0.1102, but not both. | |||
The A2 module in theoretical computer science provides foundations for studies in the area of theoretical computer science: modelling and analysing information processing systems and cryptology. The module also aims at producing skills and prerequisites for the Master-level studies, preparing one's Bachelor's thesis and supporting life-long learning. The structure of the module is given in the following table.
| Course code | Name of course | Credits | |
|---|---|---|---|
| T-79.4001 | Seminar on Theoretical Computer Science | 3 | |
| T-106.4100 | Design and Analysis of Algorithms * | 5 | |
| In addition, choose from the following courses as many as needed to complete the module: | |||
| T-79.4201 | Search Problems and Algorithms | 4 | |
| T-79.4301 | Parallel and Distributed Systems | 4 | |
| T-79.4501 | Cryptography and Data Security | 4 | |
| S-114.1100 | Computational Science | 5 | |
| 20 | |||
| * T-79.5103 Computational Complexity Theory should be taken instead of T-106.4100 in the case that T-106.4100 has to be placed in some other module. | |||
Students taking the Theoretical Computer Science A3 module should choose one or two focus areas of the major: computational logic, computational complexity, distributed computation, or cryptology. These focus areas are described in more detail on a separate page. The tables below list the compulsory and optional courses of the major and indicate the recommended course combinations for each focus area.
Choose at least one of the following courses:
| Course code | Name of course | Credits |
|---|---|---|
| T-79.5101 | Advanced Course in Computational Logic | 4 |
| T-79.5103 | Computational Complexity Theory | 5 |
| T-79.5301 | Reactive Systems | 4 |
| T-79.5501 | Cryptology | 5 |
From the following list of courses, choose as many courses as needed to cover the 20 credits required to complete the module (CL=computational logic, CC=computational complexity theory, DC=distributed computation, CR=cryptology, ✘=highly recommended, ◯=recommended)
| Course code | Name of course | Credits | CL | CC | DC | CR |
|---|---|---|---|---|---|---|
| T-79.5001 | Student Project in Theoretical Computer Science | 5 | ◯ | ◯ | ◯ | ◯ |
| T-79.5101 | Advanced Course in Computational Logic | 4 | ✘ | ◯ | ||
| T-79.5102 | Special Course in Computational Logic | 4 | ✘ | |||
| T-79.5103 | Computational Complexity Theory | 5 | ✘ | ✘ | ◯ | ◯ |
| T-79.5201 | Discrete Structures | 4 | ✘ | ◯ | ||
| T-79.5202 | Combinatorial Algorithms | 4 | ✘ | ◯ | ||
| T-79.5203 | Graph Theory | 5 | ✘ | ◯ | ||
| T-79.5204 | Combinatorial Models and Stochastic Algorithms | 6 | ✘ | ◯ | ||
| T-79.5301 | Reactive Systems | 4 | ◯ | ✘ | ||
| T-79.5302 | Symbolic Model Checking | 4 | ◯ | ✘ | ||
| T-79.5305 | Formal Methods | 4 | ✘ | |||
| T-79.5501 | Cryptology | 5 | ✘ | |||
| T-79.5502 | Advanced Course in Cryptology | 5 | ✘ |
It is possible to include other courses e.g. from the field of mathematics to the optional courses. These should be agreed with the professor of the corresponding major.