Prof. Ilkka Niemelä
The field of computational logic is understood to mean all uses of logic in computer science and engineering. For instance, logic is the basis for digital circuits and their design. It is also an important ingredient in programming languages, databases as well as in specification and verification methods. Logic-based automated reasoning techniques are widely used in artificial intelligence, knowledge-based systems and tools for verification and testing. Moreover, logic plays a key role in the theory of computability and computational complexity.
The courses offered in the area of computational logic cover many engineering applications of logic and, in particular, the design, implementation and application of automated reasoning systems. There are interesting applications which require sophisticated integration of knowledge and constraints such as product configuration, constraint programming, automated testing and computer-aided system design.
Prof. Pekka Orponen
The difficulty of computational problems can be measured by the amount of computational resources such as time, memory space or data transfer that are required for their solution. Computational complexity theory deals with assessing the difficulty of problems and the quality of their solution methods from this point of view, and in developing novel approaches to the performance of computationally demanding tasks. Research in the area has uncovered some of the most challenging open problems in modern mathematics (most notably the famous "P ?= NP" question) but the work is also externally motivated by the evolving demands for efficient solutions for concrete practical problems in several application areas. Current challenges in the field include e.g. the novel requirements of computations in parallel and distributed systems, and the computational problems and ideas arising from other sciences, especially physics and biology.
In addition to the courses recommended in the advanced A3 module in theoretical computer science, it is important that a student interested in complexity issues related to some specific field (e.g. logic, verification, cryptology, distributed systems) includes in his/her studies also courses in the chosen application area. Furthermore, studies in computational complexity should always be supported by as broad and varied selection of mathematics courses as possible; the basic undergraduate engineering mathematics curriculum should be complemented by at least further studies in algebra and probability, but also e.g. statistics and optimisation theory provide a number of fundamental tools used in computational complexity.
Prof. Keijo Heljanko
Distributed computation focuses on the design and analysis methods for parallel and distributed systems. Distributed systems are becoming industrially mainstream due to the availability of technologies such as multi-core processors and computational grids. Another trend is the use of these systems in safety critical applications. Parallel and distributed systems are inherently more complex to design than traditional systems. To fully use the potential of distributed systems their designers are faced with new challenges in software development, verification, and testing.
The studies into distributed computation offer a good insight on methods to develop efficient and correctly functioning distributed systems. The approach is based on modelling of the systems, and the use and design of computer aided tools to automatically verify and test distributed systems.
Good basic knowledge of computer science is useful. Studies in software technology, software engineering, and data communications support studies in distributed computation.
Prof. Kaisa Nyberg
Cryptology is the science of mathematical methods in information security. It investigates different approaches to defining and assessing cryptologic security and develops secure and efficient cryptographic primitives and protocols. An important aspect of cryptology is cryptanalysis, which develops methods for measuring cryptographic strength.
In addition to design and analysis of encryption algorithms, cryptology comprises methods and protocols for protection of authenticity, data integrity, confidentiality and privacy. Applications of cryptology can be found everywhere in modern communication and information systems such as mobile communications, secure remote connections and electronic commerce.
A professional in cryptology is expected to master a wide range of theoretical methods and practical tools from mathematics and computer science. In the beginning of cryptological studies a student will learn to analyse and handle different finite algebraic structures that cryptographic primitives are composed of. This knowledge is required for further studies in different aspects of cryptologic security with the means of design and analysis of algorithms, statistical methods and complexity theory.
The students in cryptology should have a background in discrete mathematics and algebra. Also, knowledge of analysis of algorithms and computational complexity theory is useful.