Skip to main content

Major and modules in Theoretical computer science

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


General description

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.

Bachelor's degree studies

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.

B.Sc. major in theoretical computer science

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.

B.Sc. minor 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.

Master's degree studies

The Department of Information and Computer Science offers Master's degree education in theoretical computer science via the following two ways:

  • The international Master's Programme on Foundations of Advanced Computing (FAdCo) is an intensive and deep 2-year programme aimed at B.Sc. level applicants from Finland and abroad.
  • Theoretical computer science can be taken as a Master's level major or a minor subject by following the module structure of the CSE degree programme.

M.Sc. major in theoretical computer science

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.

M.Sc. minor in theoretical computer science

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.

Module contents

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.

Basic modules

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.

T202-1 Computer Science A1 (20 cr)

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

T204-1 Computer Science B1 (minor in theoretical computer science) (20 cr)

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.

 

Intermediate module

T-230-2 Theoretical Computer Science A2 (20 cr)

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.

 

Advanced module

T231-3 Theoretical Computer Science A3 (20 cr)

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.