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. It is also used for UVa CS 3102 and UCLA CS181.

See below for individual chapters. You can also download:

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.

See the github.com/boazbk/tcscode for jupyter notebooks with supplementary code for the book.

For prior versions of the book, see the repository release page. The most updated version of this book is always on this page.

Frozen version for Fall 2020: I will be only making minor edits (typos, local fixes) during the fall so as not to disrupt teaching. For consistency in references and exercises, instructors can use the following version frozen as of September 1 2020: Introduction to TCS version 0.92 - September 1, 2020

Book chapters

Compiled on 09/08/2020 05:02:53

Copyright 2019, Boaz Barak. Creative Commons License
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.