English | 2019 | ISBN: 1871962437 | 214 Pages | PDF | 10 MB
Computer science, specifically the theory of computation, deserves to be better known even among non-computer scientists. The reason is simply that it is full of profound thoughts and ideas. It contains some paradoxes that reveal the limits of human knowledge. It provides ways to reason about information and randomness that are understandable without the need to resort to abstract math. This is not an academic textbook but could be the precursor to reading an academic textbook.
In Programmer’s Guide to Theory, you will find the fundamental ideas of computer science explained in an informal and yet informative way. The first chapter sets the scene by outlining the challenges of understanding computational theory. After this the content is divided into three parts. The first explores the question “What is Computable?” introducing the Turing Machine, the Halting Problem and Finite State Machines before going on to consider the different types of computing model that are available and the languages they produce. This part also covers the different types of numbers and of infinities which paves the way for considering the topics of Kolmogorov Complexity and randomness, the Axiom of Choice, Godel’s Incompleteness and the Lambda Calculus. Part II switches to lower-level concerns – from bits to Boolean logic covering information theory and error correction along the way. Part III dives deeper into computational complexity, considers polynomial-time versus exponential-time problems and then explores the benefits of recursion. It concludes with a discussion of NP (non-deterministic polynomial) versus P (polynomial) algorithms.
Don’t be put off by this list of unfamiliar concepts. This book sets out to lead you from one topic to the next so that the ideas are unfolded gradually. It does cover all the ideas that are fundamental to computer science, plus some that are not normally included but make things easier to understand, but does so in a very approachable, and even entertaining way.