Introduction to Theoretical Computer Science
Boaz Barak
Work in progress
This is a textbook in preparation for an introductory undergraduate course on theoretical computer science. I am using this text for Harvard CS 121.
See below for individual chapters. You can also download:
Book in a single PDF file (about 600 pages, 10MB).
If you have any comments, suggestions, typo fixes, etc.. I would be very grateful if you post them as an issue or pull request in the GitHub repository boazbk/tcs where I am maintaining the source files for these notes. You can also post comments on each chapter in the links below. The repository github.com/boazbk/tcscode will eventually contain all supplemantary code and online appendices for this book.
I am revising the book in the spring of 2019. For prior versions of the book, see the repository release page. The most updated version of this book is always on this page.
Book chapters
- Chapter p: Preface (PDF: best formatting , Word: buggy)
- Chapter 0: Introduction (PDF: best formatting , Word: buggy)
- Chapter 1: Mathematical Background (PDF: best formatting , Word: buggy)
- Chapter 2: Computation and Representation (PDF: best formatting , Word: buggy)
- Chapter 3: Defining computation (PDF: best formatting , Word: buggy)
- Chapter 4: Syntactic sugar, and computing every function (PDF: best formatting , Word: buggy)
- Chapter 5: Code as data, data as code (PDF: best formatting , Word: buggy)
- Chapter 6: Loops and infinity (PDF: best formatting , Word: buggy)
- Chapter 7: Equivalent models of computation (PDF: best formatting , Word: buggy)
- Chapter 8: Universality and uncomputability (PDF: best formatting , Word: buggy)
- Chapter 9: Restricted computational models (PDF: best formatting , Word: buggy)
- Chapter 10: Is every theorem provable? (PDF: best formatting , Word: buggy)
- Chapter 11: Efficient computation (PDF: best formatting , Word: buggy)
- Chapter 12: Modeling running time (PDF: best formatting , Word: buggy)
- Chapter 13: Polynomial-time reductions (PDF: best formatting , Word: buggy)
- Chapter 14: NP, NP completeness, and the Cook-Levin Theorem (PDF: best formatting , Word: buggy)
- Chapter 15: What if P equals NP? (PDF: best formatting , Word: buggy)
- Chapter 16: Space bounded computation (PDF: best formatting , Word: buggy)
- Chapter 17: Probability Theory 101 (PDF: best formatting , Word: buggy)
- Chapter 18: Probabilistic computation (PDF: best formatting , Word: buggy)
- Chapter 19: Modeling randomized computation (PDF: best formatting , Word: buggy)
- Chapter 20: Cryptography (PDF: best formatting , Word: buggy)
- Chapter 21: Proofs and algorithms (PDF: best formatting , Word: buggy)
- Chapter 22: Quantum computing (PDF: best formatting , Word: buggy)
Compiled on 03/06/2019 21:47:39
Copyright 2019, Boaz Barak.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Produced using pandoc and panflute with templates derived from gitbook and bookdown.