The aim of this textbook is not only to provide an elegant route through the theoretical fundamentals of computer science, but also to show that theoretical computer science is a fascinating discipline, full of spectacular contributions and miracles, and depth in research, and yet directly applicable. Thus, we aim to excite people about its study. To achieve these goals we do not hesitate to take a lot of space to present motivations, and especially to give the informal development of crucial ideas and concepts and their transparent, but rigorous presentation.
An additional aim is to present the development of the computer scientist's way of thinking, so we do not restrict this book to the classic areas like computability and automata theory but we also present fundamental concepts such as approximation and randomization in algorithmics and we explain the basic ideas of cryptography and interconnection network design.