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 the 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.

See the 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 20223: 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 July 24, 2023: Introduction to TCS version 0.95

Book chapters

Compiled on 12/06/2023 00:07:51

Copyright 2023, 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.