Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
This textbook is an introduction to theoretical computer science with a focus on the development of its algorithmic concepts. It is based on a substantially extended translation of the German textbook "Algorithmische Konzepte der Informatik" written for the first introductory course to theoretical fundamentals of computer science at the University of Aachen. The topics have been chosen to strike a balance between classical fundamentals related to automata, computability, and NP-completeness and modern topics such as approximation algorithms, randomization, cryptography, and interconnection networks.
In contrast to the technical and applied areas of computer science, theoretical computer science is strongly related to fundamental questions about the existence of algorithmic solutions, physical limits of computing, methodology of algorithm design, etc. Since these topics are strongly connected with mathematics and not always directly related to applications, students often consider theoretical computer science too difficult and not motivating enough. The main goal of this book is to change this negative opinion on the theory. Theoretical computer science is a fascinating scientific discipline. Through its spectacular, deep results and high interdisciplinarity, it has made great contributions to our view of the world. On the other hand, there is no doubt about its relevance to practice. It provides methodology as well as particular concepts and techniques that can be applied throughout the entire process of design, implementation, and analysis of software systems. Moreover, without the know-how of theoretical fundamentals many everyday applications of enormous economic importance (such as Ε-commerce) would be impossible.
The right choice of topics and related motivations is not the only effort we make to stimulate the reader's interest for theoretical computer science. Despite the fact that there is no easy way to develop a deep understanding and mastery of methods that have significant and impressive applications, we try to provide an easy route into the fundamentals of computer science, and show that matters strongly related to mathematical rigor can be readily accessible even for beginners. Simplicity and transparency are the main educational features of this book. All ideas, concepts, analysis, and proofs are first explained in an informal way in order to build the right intuition. They are then carefully specified in rigorous detail. Following this strategy we choose to illustrate the main concepts and ideas using the most transparent, simple examples rather than to present the best, but too technical results. Presenting the main concepts of the theory in the order of their historical discovery, we aim to teach the development of the computer scientist's kind of thinking from the early days to the present.
Alphabets, Words, Languages, and Algorithmic Problems
Finite Automata
Turing Machines
Computability
Complexity Theory
Algorithmics for Hard Problems
Randomization
Communication and Cryptography