12 Free Books for Learning Theoretical Computer Science

Looks like there was high demand for books on data mining and data analysis, which naturally led me to think of a way to gather up books about:

  • theoretical computer science
  • computer sciences
  • theory of computation

I was able to find at least 12, educational and informative free books for you to learn from. I hope that some of them will be completely new, and that you will download them and start educating yourself on the art of theoretical computer science.

Theoretical computer science is a division or subset of general computer science and mathematics which focuses on more abstract or mathematical aspects of computing and includes the theory of computation. [W]

Computer science is nothing, but the art of learning how to build an design programs that can execute and solve particular set of problems. The terminology itself – only when defined properly – is very easy to understand, but the actual art takes a while to master and requires a lot of studies to be concluded.

Computer Science Jobs 2014

You should be able to pick any of these books without any prior knowledge, and by the end of the book, have a more broad understanding of the theory of computation and how you can use it to your advantage. Lets not waste any time, and my only favor to ask you is that you share this with your friends or classmates who want to learn more about computer science.

Think Complexity

Think Complexity
Lovely book to have for intermediate beginners to learn more about algorithims, data structure and of course, Python. You’ll be learning about computational science and philosophy, and there are plenty of theories included to deepen your understanding. Great book, by a great publisher.

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs
I love this book, because it really emphasizes the fact that in order to achieve some sort of understanding and skill within your field of choice (in this case, computer science) – we must keep moving forward, and keep writing those programs in order to better understand how they work and what is their main purpose.

This books looks at the three main aspects of computation; the human itself, the programs, and the computer which does the work. It’s a great concept, and this book is highly recommended to anyone beginning his journey. (extra knowledge will never hurt)

Programming Languages: Application and Interpretation

Programming Languages: Application and Interpretation
I love the approach of this book, it’s like a novel; you’re supposed to follow the story to put together the bits and pieces, and instead of making straightforward programs, you will encounter a lot of errors (purposefully), in order to strengthen that which you are learning.

You can also watch the lecture above, which will give a more brief introduction, just remember to followup on the second lecture as well. Highly recommended book for the amount of exercise you get out of it.

Introduction to Computing

Introduction to Computing
In this book, the author looks at programming as a liberal art, instead of looking it at as something that people can just learn and live with. It emphasizes the importance of computing in our modern world, and how it affects the changes and the growth of the planet.

You will learn about data, programming, analysis, problem solving and a lot more, all in easy to understand manner and you can follow at your own pace. Great book to have.

Principles of Programming Languages

Principles of Programming Languages
Just as it is important to learn more than one programming language, it’s also important to learn more than just a handful of terms and functions that programming presents, and that is exactly the approach that this book is trying to take. It looks at the programming fundamentals from a perspective of computer science, instead of looking at one specific language.

Practical Foundations for Programming Languages

Practical Foundations for Programming Languages
Robert Harper has been working on this book for a long time now, and it’s still being frequently updated. As of writing this, it’s stretching far into 600 page mark, which is remarkable, considering the depth and intellectual property that this book presents.

It goes through many things, including data variables, definitions, total functions and the general syntax of good programming design. It’s a very in-depth book, and probably is not suited for beginners, at all. Read the preface to understand it better, it’s quite heavy.

Network Science

Network Science
It’s a work in progress (WIP), but more chapters are being added, and there are a total of nine chapters available right now, which will cover the basics of network science, how it works and how the data travels across the wide network, to end up at the same point it was at the beginning; only now, filled with a network of data.

Plenty of concepts in here to learn and observe.

Models Of Computation: Exploring the Power of Computing

Models Of Computation: Exploring the Power of Computing

In Models of Computation: Exploring the Power of Computing, John Savage re-examines theoretical computer science, offering a fresh approach that gives priority to resource tradeoffs and complexity classifications over the structure of machines and their relationships to languages. This viewpoint reflects a pedagogy motivated by the growing importance of computational models that are more realistic than the abstract ones studied in the 1950s, ’60s and early ’70s.

A lot of theories and studies on complexity, and logical models. Great book to add to your collection, considering it’s free.

Introduction to Theory of Computation

Introduction to Theory of Computation
It’s only a textbook, meant for undergraduate students and is being used in class since the year 2002, it constantly updated to fix errors and mention new concepts, is a great resource to have for those who want to dive into mathematical functions of computer programming, and learn how to mirror those functions into a real, working machine.

Homotopy Type Theory

Homotopy Type Theory

Homotopy type theory is a new branch of mathematics that combines aspects of several different fields in a surprising way. It is based on a recently discovered connection between homotopy theory and type theory. It touches on topics as seemingly distant as the homotopy groups of spheres, the algorithms for type checking, and the definition of weak ∞-groupoids.

I have not have had the pleasure of introducing myself to this book all that much, but by the looks of it; it contains a lot of mathematical theories and logical expressions that might not be that easy to understand for a beginner.

Building Blocks for Theoretical Computer Science

Building Blocks for Theoretical Computer Science
It’s all about formal mathematics, and learning how to write and read them at the same time. It’s fast paced book that covers a wide variety of subjects, and each subject get looked at briefly enough for you to understand what it does, and how it works.

The main focus is put on theoretical computer science, and the subsets of complexity, computation, algorithm analysis and a lot more.

An Introduction to the Theory of Computation

An Introduction to the Theory of Computation
Great introductory book, seven chapters that are increasing in difficulty as you continue learning. It looks at what I talked about at the beginning of the post: the need to understand how problems are being solved, and how the actual machines work.

Essential knowledge to anyone who wants to learn computer science.

Dori-Mic and the Universal Machine!

This was suggested by one of the authors from this list; Dori-Mic is a children’s book that showcases how creative kids can be, and how we should help them practice their own creative ways. Lovely!

Free Books for Learning Theoretical Computer Science

I’m blown away by the amount of free resources that are made available to anyone in the world, through the power of the internet: one of the milestones in computer programming and science. My thanks go out to all of the authors of these books, and I know that I myself will be learning from them, as I have already started doing so.

Were you able to find any of your own favorites in the list, or perhaps you know of more books like this? I’m trying to make a solid collection that will later be read and used by thousands upon thousands of students and computer science enthusiasts around the world.

Good luck with learning, and wishing you the best of luck with theoretical computer science – it’s a little bit more complex, but is an essential subset to know!